YouTube Auto-Liker Button ( multilang support )

Vytvoří tlačítko které po aktivaci automaticky lajkuje komentáře na YouTube

// ==UserScript==
// @name         YouTube Auto-Liker Button ( multilang support )
// @namespace    YouTube Auto-Liker
// @version      1.1
// @description  Vytvoří tlačítko které po aktivaci automaticky lajkuje komentáře na YouTube
// @author       Projekt Darkside - DevIT Brno - EU
// @license      Darkside;
// @match        https://www.youtube.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Překlady fráze "Označit tento komentář jako Líbí se mi"
    const Wlang = [
        "Mark this comment as liked", // Angličtina
        "Označit tento komentář jako Líbí se mi", // Čeština
        "Označiť tento komentár ako Páči sa mi", // Slovenština
        "Marquer ce commentaire comme aimé", // Francouzština
        "Marcar este comentario como Me gusta", // Španělština
        "Diesen Kommentar als Gefällt mir markieren", // Němčina
        "Contrassegna questo commento come Mi piace", // Italština
        "Marcar este comentário como Gostei", // Portugalština
        "Отметить этот комментарий как понравившийся", // Ruština
        "このコメントを高評価としてマーク", // Japonština
    ];

    // Funkce pro vytvoření tlačítka "Auto-Like" s použitím CSS třídy
    function createButton() {
        const container = document.querySelector('#info #top-row') || document.querySelector('.item.style-scope.ytd-watch-metadata');
        if (container && !document.querySelector('#auto-like-btn')) {
            const button = document.createElement('button');
            button.id = 'auto-like-btn';
            button.classList.add('auto-like-btn');
            button.innerText = 'Auto-Like 👍';
            button.onclick = autoLikeThumbsUp;
            container.appendChild(button);

            console.log('✅ Auto-Like tlačítko přidáno.');
        }
    }

    // Přidání CSS stylů do dokumentu
    function addCustomStyles() {
        const style = document.createElement('style');
        style.innerHTML = `
        .auto-like-btn {
            margin-left: 10px;
            padding: 5px 10px;
            background-color: #ff0000;
            color: #fff;
            border: none;
            border-radius: 3px;
            cursor: pointer;
            font-size: 14px;
            transition: background-color 0.3s ease;
        }
        .auto-like-btn:hover {
            background-color: #cc0000;
        }
    `;
        document.head.appendChild(style);
    }

    // Funkce pro automatické lajkování komentářů
    function autoLikeThumbsUp() {
        const selector = Wlang.map(phrase => `button[aria-label^="${phrase}"]`).join(', ');
        const buttons = document.querySelectorAll(selector);
        if (buttons.length === 0) {
            console.warn('⚠️ Nebyla nalezena žádná tlačítka "Líbí se mi".');
            return;
        }

        console.log(`🔹 Nalezeno ${buttons.length} komentářů k lajknutí.`);
        buttons.forEach((button, index) => {
            setTimeout(() => {
                if (!button.classList.contains('liked')) {
                    button.click();
                    console.log(`👍 Lajknut komentář #${index + 1}`);
                }
            }, getRandomDelay(index));
        });
    }

    // Funkce pro generování náhodného zpoždění
    function getRandomDelay(index) {
        const minDelay = 500; // Minimum delay of 0.5 seconds
        const maxDelay = 2000; // Maximum delay of 2 seconds
        return minDelay + (Math.random() * (maxDelay - minDelay)) + (index * 1000);
    }

    // Observer sledující změny v DOM (pro tlačítko)
    function observeDOM() {
        const observer = new MutationObserver(() => {
            createButton();
        });
        observer.observe(document.body, { childList: true, subtree: true });
    }

    // Spustit observer pro tlačítko
    observeDOM();    
    // Spuštění stylů při načtení skriptu
    addCustomStyles();
})();