Google Infinite Scroll (+ икона на сайта)

Инструмент за подобряване на търсенето в Google, който показва неограничени резултати за търсене и икони на сайта заедно.

// ==UserScript==
// @name	Google Infinite Scroll (+ Site Icon)
// @name:ar	Google Infinite Scroll (+ أيقونة الموقع)
// @name:az	Google Infinite Scroll (+ sayt simvolu)
// @name:be	Google Infinite Scroll (+ значок сайта)
// @name:bg	Google Infinite Scroll (+ икона на сайта)
// @name:bn	গুগল অসীম স্ক্রোল (+ সাইট আইকন)
// @name:ca	Google Infinite Scroll (+ icona del lloc)
// @name:cs	Google Infinite Scroll (+ ikona webu)
// @name:cy	Sgrol Infinite Google (+ Eicon Safle)
// @name:da	Google Infinite Scroll (+ Site Icon)
// @name:de	Google Infinite Scroll (+ Site -Symbol)
// @name:el	Google Infinite Scroll (+ Εικονίδιο ιστότοπου)
// @name:en	Google Infinite Scroll (+ Site Icon)
// @name:eo	Google Infinite Scroll (+ retejo -ikono)
// @name:es	Google Infinite Scroll (+ icono del sitio)
// @name:et	Google Infinite Scroll (+ saidi ikoon)
// @name:eu	Google Infinite Scroll (+ Gunearen ikonoa)
// @name:fa	Google Infinite Scroll (+ نماد سایت)
// @name:fi	Google Infinite Scroll (+ Sivustokuvake)
// @name:fr	Google Infinite Scroll (+ icône du site)
// @name:ga	Scrollaigh Google Infinite (+ deilbhín an tsuímh)
// @name:gl	Google Infinite Scroll (+ icona do sitio)
// @name:gu	ગૂગલ અનંત સ્ક્રોલ (+ સાઇટ ચિહ્ન)
// @name:hi	Google अनंत स्क्रॉल (+ साइट आइकन)
// @name:hr	Google Infinite Scroll (+ ikona web mjesta)
// @name:ht	Google enfini woulo liv (+ icon sit)
// @name:hu	Google Infinite Scroll (+ Site ikon)
// @name:id	Google Infinite Scroll (+ Ikon Situs)
// @name:is	Google Infinite Scroll (+ Site Icon)
// @name:it	Google Infinite Scroll (+ icona del sito)
// @name:iw	גלילה אינסופית של גוגל (+ סמל אתר)
// @name:ja	Google Infinite Scroll(+サイトアイコン)
// @name:ka	Google Infinite Scroll (+ საიტის ხატი)
// @name:kn	ಗೂಗಲ್ ಇನ್ಫೈನೈಟ್ ಸ್ಕ್ರಾಲ್ (+ ಸೈಟ್ ಐಕಾನ್)
// @name:ko	Google Infinite 스크롤 (+ 사이트 아이콘)
// @name:la	Google infinitum volumen (+ site icon)
// @name:lt	„Google Infinite Scroll“ (+ svetainės piktograma)
// @name:lv	Google Infinite ritināšana (+ vietnes ikona)
// @name:mk	Google Infinite Scroll (+ икона на страницата)
// @name:ms	Google Infinite Scroll (+ ikon tapak)
// @name:mt	Google Infinite Scroll (+ Ikona tas-Sit)
// @name:nl	Google Infinite Scroll (+ sitepictogram)
// @name:no	Google Infinite Scroll (+ nettstedikon)
// @name:pl	Google Infinite Scroll (+ ikona witryny)
// @name:pt	Google Infinite Scroll (+ ícone do site)
// @name:ro	Google Infinite Scroll (+ pictograma site -ului)
// @name:ru	Google Infinite Scroll (+ значок сайта)
// @name:sk	Google Infinite Scroll (+ ikona stránok)
// @name:sl	Google Infinite Scroll (+ ikona spletnega mesta)
// @name:sq	Google Infinite Scroll (+ ikona e faqes)
// @name:sr	Гоогле Инфините Сцролл (+ икона сајта)
// @name:sv	Google Infinite Scroll (+ webbplatsikon)
// @name:sw	Google Infinite Kitabu (+ Icon ya Tovuti)
// @name:ta	கூகிள் எல்லையற்ற சுருள் (+ தள ஐகான்)
// @name:te	గూగుల్ అనంతమైన స్క్రోల్ (+ సైట్ ఐకాన్)
// @name:th	Google Infinite Scroll (+ ไอคอนไซต์)
// @name:tl	Google Infinite Scroll (+ icon ng site)
// @name:tr	Google Infinite Scroll (+ site simgesi)
// @name:uk	Google Infinite Scroll (+ значок сайту)
// @name:ur	گوگل لامحدود اسکرول (+ سائٹ آئیکن)
// @name:vi	Google Infinite Scroll (+ Biểu tượng trang web)
// @name:yi	גוגל ינפאַנאַט מעגילע (+ פּלאַץ ייקאַן)
// @name:zh-CN	Google无限滚动(+站点图标)
// @name:zh-TW	Google無限滾動(+站點圖標)

// @description	Google Search Enhancement tool that displays unlimited search results scrolling and site icons together.
// @description:ar	أداة تحسين البحث في Google التي تعرض نتائج البحث غير المحدودة للتمرير والمواقع معًا.
// @description:az	Limitsiz axtarış nəticələrini sürüşmə və sayt nişanlarını birlikdə göstərən Google axtarış gücləndirmə vasitəsi.
// @description:be	Інструмент паляпшэння пошуку Google, які адлюстроўвае неабмежаваныя вынікі пошуку пракруткі і значкі сайта разам.
// @description:bg	Инструмент за подобряване на търсенето в Google, който показва неограничени резултати за търсене и икони на сайта заедно.
// @description:bn	গুগল অনুসন্ধান বর্ধন সরঞ্জাম যা সীমাহীন অনুসন্ধান ফলাফল স্ক্রোলিং এবং সাইট আইকন একসাথে প্রদর্শন করে।
// @description:ca	Eina de millora de la cerca de Google que mostra els resultats de la cerca il·limitats i les icones del lloc.
// @description:cs	Nástroj pro vylepšení vyhledávání Google, který zobrazuje neomezené výsledky vyhledávání posouvání a ikony webu dohromady.
// @description:cy	Offeryn Gwella Chwilio Google sy'n Arddangos Canlyniadau Chwilio Diderfyn yn sgrolio ac eiconau gwefan gyda'i gilydd.
// @description:da	Google Search Enhancement Tool, der viser ubegrænsede søgeresultater rulning og stedikoner sammen.
// @description:de	Tool für Google Search Enhancement, mit dem unbegrenzte Suchergebnisse scrollen und Site -Symbole zusammen angezeigt werden.
// @description:el	Το εργαλείο βελτίωσης της αναζήτησης Google που εμφανίζει απεριόριστα αποτελέσματα αναζήτησης και εικονίδια ιστότοπου μαζί.
// @description:en	Google Search Enhancement tool that displays unlimited search results scrolling and site icons together.
// @description:eo	Google Search Enhancement -ilo, kiu montras senlimajn serĉrezultojn moviĝantajn kaj retejajn ikonojn kune.
// @description:es	Herramienta de mejora de la búsqueda de Google que muestra los resultados de búsqueda ilimitados de desplazamiento e iconos del sitio juntos.
// @description:et	Google'i otsingu täiustamise tööriist, mis kuvab piiramatu otsingutulemuste kerimise ja saidi ikoonid koos.
// @description:eu	Google Bilatu hobetzeko tresna mugagabea da bilaketa-emaitzak eta gunearen ikonoak batera bistaratzen dituena.
// @description:fa	ابزار تقویت جستجوی Google که نتایج جستجوی نامحدودی را نشان می دهد و نمادهای سایت را با هم نشان می دهد.
// @description:fi	Google -haun parannustyökalu, joka näyttää rajoittamattomat hakutulokset vieritys- ja sivustokuvakkeet yhdessä.
// @description:fr	Outil d'amélioration de la recherche Google qui affiche les résultats de recherche illimités et les icônes du site ensemble.
// @description:ga	Uirlis feabhsaithe cuardaigh Google a thaispeánann scrollaigh torthaí cuardaigh neamhtheoranta agus deilbhíní suímh le chéile.
// @description:gl	Ferramenta de mellora da busca de Google que mostra os resultados de busca ilimitados e as iconas do sitio xuntos.
// @description:gu	ગૂગલ સર્ચ એન્હાન્સમેન્ટ ટૂલ જે અમર્યાદિત શોધ પરિણામ સ્ક્રોલિંગ અને સાઇટ ચિહ્નો એક સાથે પ્રદર્શિત કરે છે.
// @description:hi	Google खोज एन्हांसमेंट टूल जो असीमित खोज परिणाम स्क्रॉलिंग और साइट आइकन को एक साथ प्रदर्शित करता है।
// @description:hr	Google alat za poboljšanje pretraživanja koji prikazuje neograničeno pomicanje rezultata pretraživanja i ikone web mjesta zajedno.
// @description:ht	Zouti amelyorasyon rechèch Google ki montre rezilta rechèch san limit defile ak ikon sit yo ansanm.
// @description:hu	A Google Search Enhancement eszköz, amely a korlátlan keresési eredményeket jeleníti meg a görgetési és a webhely ikonjait.
// @description:id	Alat Peningkatan Pencarian Google yang menampilkan hasil pencarian tanpa batas dan ikon situs bersama -sama.
// @description:is	Google leitaruppbótartæki sem sýnir ótakmarkaðar leitarniðurstöður sem skrun og táknmyndir saman.
// @description:it	Strumento di miglioramento della ricerca di Google che visualizza insieme i risultati di ricerca illimitati e le icone del sito.
// @description:iw	כלי שיפור חיפוש של גוגל המציג יחד תוצאות חיפוש ללא הגבלה וסמלי אתר.
// @description:ja	無制限の検索結果を表示するGoogle Search Enhancement Toollingスクロールとサイトアイコンを一緒に表示します。
// @description:ka	Google Search Enhancement ინსტრუმენტი, რომელიც აჩვენებს შეუზღუდავი ძიების შედეგების გადახვევას და საიტის ხატებს ერთად.
// @description:kn	ಅನಿಯಮಿತ ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಸ್ಕ್ರೋಲಿಂಗ್ ಮತ್ತು ಸೈಟ್ ಐಕಾನ್‌ಗಳನ್ನು ಒಟ್ಟಿಗೆ ಪ್ರದರ್ಶಿಸುವ ಗೂಗಲ್ ಹುಡುಕಾಟ ವರ್ಧನೆ ಸಾಧನ.
// @description:ko	무제한 검색 결과 스크롤 및 사이트 아이콘을 함께 표시하는 Google 검색 향상 도구.
// @description:la	Google Quaerere Enhancement instrumentum quod Displays infinitam Search Results Scrolling et Site Icones simul.
// @description:lt	„Google“ paieškos patobulinimo įrankis, rodantis neribotą paieškos rezultatų slinkimo ir svetainės piktogramos kartu.
// @description:lv	Google meklēšanas uzlabošanas rīks, kas parāda neierobežotu meklēšanas rezultātu ritināšanu un vietnes ikonas kopā.
// @description:mk	Алатка за подобрување на пребарувањето на Google што прикажува неограничени резултати од пребарувањето за движење и икони на страници заедно.
// @description:ms	Alat Peningkatan Carian Google yang memaparkan hasil carian tanpa had dan ikon laman web bersama -sama.
// @description:mt	Għodda għat-Titjib tat-Tiftix tal-Google li turi r-riżultati tat-tfittxija illimitati u l-ikoni tas-sit flimkien.
// @description:nl	Google zoekverbeteringstool met onbeperkte zoekresultaten die scrollen en sitepictogrammen samen weergeven.
// @description:no	Google Search Enhancement Tool som viser ubegrensede søkeresultater rulling og nettstedikoner sammen.
// @description:pl	Narzędzie ulepszenia wyszukiwania Google, które wyświetla nieograniczone wyniki wyszukiwania i ikony witryny.
// @description:pt	Ferramenta de aprimoramento de pesquisa do Google que exibe os resultados ilimitados dos resultados da pesquisa e ícones do site.
// @description:ro	Instrument de îmbunătățire a căutării Google care afișează împreună rezultatele căutării nelimitate și pictogramele site -ului.
// @description:ru	Инструмент улучшения поиска Google, который отображает неограниченные результаты поиска прокрутка и значки сайта вместе.
// @description:sk	Nástroj na vylepšenie vyhľadávania Google, ktorý zobrazuje neobmedzené výsledky vyhľadávania, posúva a ikony stránok spolu.
// @description:sl	Google Orodje za izboljšanje iskanja, ki prikazuje neomejene rezultate iskanja in ikone spletnega mesta.
// @description:sq	Vegël për përmirësimin e kërkimit të Google që tregon rezultatet e pakufizuara të kërkimit të lëvizjes dhe ikonat e faqes së bashku.
// @description:sr	Гоогле Алат за унапређење претраживања који приказује неограничене резултате претраживања и иконе сајта заједно.
// @description:sv	Googles sökförbättringsverktyg som visar obegränsade sökresultatrullning och webbplatsikoner tillsammans.
// @description:sw	Chombo cha Uimarishaji wa Utafutaji wa Google ambacho kinaonyesha matokeo ya utaftaji usio na kikomo na icons za wavuti pamoja.
// @description:ta	வரம்பற்ற தேடல் முடிவுகள் ஸ்க்ரோலிங் மற்றும் தள சின்னங்களை ஒன்றாகக் காண்பிக்கும் கூகிள் தேடல் மேம்பாட்டு கருவி.
// @description:te	అపరిమిత శోధన ఫలితాలను స్క్రోలింగ్ మరియు సైట్ చిహ్నాలను కలిసి ప్రదర్శించే గూగుల్ సెర్చ్ ఎన్‌హాన్స్‌మెంట్ సాధనం.
// @description:th	เครื่องมือเพิ่มประสิทธิภาพของ Google Search ที่แสดงผลการค้นหาการค้นหาแบบไม่ จำกัด และไอคอนไซต์ร่วมกัน
// @description:tl	Ang tool sa pagpapahusay ng paghahanap sa Google na nagpapakita ng walang limitasyong mga resulta ng paghahanap sa pag -scroll at mga icon ng site nang magkasama.
// @description:tr	Sınırsız arama sonuçları kaydırma ve site simgelerini bir araya getiren Google Arama Geliştirme aracı.
// @description:uk	Інструмент удосконалення пошуку Google, який відображає необмежені результати пошуку та піктограми сайту.
// @description:ur	گوگل سرچ انشینسمنٹ ٹول جو لامحدود تلاش کے نتائج سکرولنگ اور سائٹ کے شبیہیں ایک ساتھ دکھاتا ہے۔
// @description:vi	Công cụ tăng cường tìm kiếm của Google hiển thị các biểu tượng kết quả tìm kiếm không giới hạn và các biểu tượng trang web cùng nhau.
// @description:yi	Google זוכן ענכאַנסמאַנט געצייַג וואָס דיספּלייז אַנלימאַטאַד זוכן רעזולטאַטן סקראָללינג און ספעיס ייקאַנז צוזאַמען.
// @description:zh-CN	Google搜索增强工具,将无限搜索结果滚动和站点图标一起显示。
// @description:zh-TW	Google搜索增強工具,將無限搜索結果滾動和站點圖標一起顯示。

// @namespace         https://ndaesik.tistory.com/
// @version           2023.04.20.09.37
// @author            ndaesik
// @icon              https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://www.google.com
// @match             *://www.google.com/search*
// ==/UserScript==

const currentSearchTab = document.querySelector('[aria-current]')
const checkAllResultsPage = document.getElementById('result-stats')
let pageCounter = document.createElement('style')
pageCounter.innerText = `
/* */
g-section-with-header,
#botstuff ~ #res[role="main"] video-voyager{display: none!important;}

/* page counter */
#botstuff ~ #res[role="main"] {counter-increment: number 2; border-top: solid ${window.getComputedStyle( document.querySelector('#top_nav > div') ).getPropertyValue('border-bottom-color')} 1px; }
#botstuff ~ #res[role="main"]:before {content: counter(number);
font-size: 14px; position: absolute; right: 0; margin-top: -10px; padding-right: 8px; padding-left: 12px;
color: ${window.getComputedStyle( document.querySelector('#result-stats') ).getPropertyValue('color')};
background-color: ${window.getComputedStyle( document.body ).getPropertyValue('background-color')}}`
let removeNavNumbs = document.createElement('style')
removeNavNumbs.innerText = `#botstuff [role="navigation"] {visibility: hidden; height: 0;}`
document.head.appendChild(removeNavNumbs)

if ( checkAllResultsPage ) {
    // create favicons
    function createFavicons(target) {
        for (let i = 0; i < target.querySelectorAll('cite').length; ++i) {
            let lnk = target.querySelector('#center_col>[role="main"]').querySelectorAll('cite')[i]
              , txt = lnk.textContent
              , url = txt.match(/\./g) ? (txt.match(/\/\//g) ? txt.match(/(?<=\/\/)[^\s]*/g) : txt.match(/^[^\s]*/g)) : false
              , fav = url ? '/s2/favicons?domain=' + url : '';
            if (url) {
                let img = target.createElement('div');
                img.style.cssText = `background-image:url("${fav}"); width:16px; height:16px; display:inline-block; margin-right:6px`;
                lnk.prepend(img)
                lnk.style.cssText = 'display:inline-block'
            };
        };
    };

    if (!document.querySelector('a > h3 + div > span > div > img')) {
        createFavicons(document);
    }


    // load pages when it's bottom + create favicons
    let pageNumber = 0
    let loadNewResults = _ => {
        let nextURL = new URL((document.querySelector('[role="navigation"]>[role="presentation"] a:first-child').href).replace(/(?<=start=)(.*?)(?=\&)/g,pageNumber * 10));
        fetch( nextURL.href )
            .then(response => response.text())
            .then(text => {
            let newDocument = (new DOMParser()).parseFromString( text, 'text/html')
            let newResults = newDocument.documentElement.querySelector('#center_col > [role="main"]')
            if (!document.querySelector('a > h3 + div > span > div > img')) {
                createFavicons(newDocument);
            }

            let checkMoreResults = newDocument.querySelector('#topstuff p > span > em') == null
            if ( checkMoreResults ) {
                document.createElement('div').appendChild(newResults)
                document.querySelector('#center_col > [role="main"]').parentElement.appendChild(newResults)
            };
        });

        if ( pageNumber = 1 ) {
            document.head.appendChild(pageCounter)
        };
    };

    document.addEventListener('scroll', _ => {
        if (window.innerHeight + window.pageYOffset >= document.body.offsetHeight) {
            pageNumber = pageNumber + 1
            loadNewResults();
        };
    });
};