DotDB PLUS

Add links and icons to TLDs in DotDB search results

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         DotDB PLUS
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Add links and icons to TLDs in DotDB search results
// @author       [email protected]
// @match        https://dotdb.com/search*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function addLinksAndIconsToTLDs() {
        const tableBody = document.querySelector('#result-table tbody');
        if (!tableBody) {
            return;
        }

        const rows = tableBody.querySelectorAll('tr');

        rows.forEach(row => {
            const keywordCell = row.querySelectorAll('td')[0]; // Get keyword column (first td)
            if (!keywordCell) {
                return;
            }
            let sld = keywordCell.textContent.trim();

            const tldCell = row.querySelectorAll('td')[3];
            if (!tldCell) {
                return;
            }

            const tldDiv = tldCell.querySelector('.collapse-content .tw-w-\\[90\\%\\]');
            if (!tldDiv) {
                return;
            }

            let tldText = tldDiv.textContent.trim();
            if (!tldText) {
                return;
            }

            const tlds = tldText.split(',').map(tld => tld.trim());

            let newHTML = '';
            tlds.forEach(tld => {
                const domain = `${sld}${tld}`;
                const link = `https://${domain}`;
                const iconUrl = `https://www.google.com/s2/favicons?domain=${domain}`;

                const tldLinkHTML = `
                    <a href="${link}" target="_blank" rel="noopener noreferrer" style="display: inline-flex; align-items: center; margin-right: 5px;">
                        <img src="${iconUrl}" style="width: 16px; height: 16px; margin-right: 3px; vertical-align: middle;">
                        ${tld}
                    </a>`;
                newHTML += tldLinkHTML;
            });

            tldDiv.innerHTML = newHTML;
        });
    }

    window.addEventListener('load', addLinksAndIconsToTLDs);

})();