YouTube Auto-Liker Button ( multilang support )

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

  1. // ==UserScript==
  2. // @name YouTube Auto-Liker Button ( multilang support )
  3. // @namespace YouTube Auto-Liker
  4. // @version 1.1
  5. // @description Vytvoří tlačítko které po aktivaci automaticky lajkuje komentáře na YouTube
  6. // @author Projekt Darkside - DevIT Brno - EU
  7. // @license Darkside;
  8. // @match https://www.youtube.com/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15.  
  16. // Překlady fráze "Označit tento komentář jako Líbí se mi"
  17. const Wlang = [
  18. "Mark this comment as liked", // Angličtina
  19. "Označit tento komentář jako Líbí se mi", // Čeština
  20. "Označiť tento komentár ako Páči sa mi", // Slovenština
  21. "Marquer ce commentaire comme aimé", // Francouzština
  22. "Marcar este comentario como Me gusta", // Španělština
  23. "Diesen Kommentar als Gefällt mir markieren", // Němčina
  24. "Contrassegna questo commento come Mi piace", // Italština
  25. "Marcar este comentário como Gostei", // Portugalština
  26. "Отметить этот комментарий как понравившийся", // Ruština
  27. "このコメントを高評価としてマーク", // Japonština
  28. ];
  29.  
  30. // Funkce pro vytvoření tlačítka "Auto-Like" s použitím CSS třídy
  31. function createButton() {
  32. const container = document.querySelector('#info #top-row') || document.querySelector('.item.style-scope.ytd-watch-metadata');
  33. if (container && !document.querySelector('#auto-like-btn')) {
  34. const button = document.createElement('button');
  35. button.id = 'auto-like-btn';
  36. button.classList.add('auto-like-btn');
  37. button.innerText = 'Auto-Like 👍';
  38. button.onclick = autoLikeThumbsUp;
  39. container.appendChild(button);
  40.  
  41. console.log('✅ Auto-Like tlačítko přidáno.');
  42. }
  43. }
  44.  
  45. // Přidání CSS stylů do dokumentu
  46. function addCustomStyles() {
  47. const style = document.createElement('style');
  48. style.innerHTML = `
  49. .auto-like-btn {
  50. margin-left: 10px;
  51. padding: 5px 10px;
  52. background-color: #ff0000;
  53. color: #fff;
  54. border: none;
  55. border-radius: 3px;
  56. cursor: pointer;
  57. font-size: 14px;
  58. transition: background-color 0.3s ease;
  59. }
  60. .auto-like-btn:hover {
  61. background-color: #cc0000;
  62. }
  63. `;
  64. document.head.appendChild(style);
  65. }
  66.  
  67. // Funkce pro automatické lajkování komentářů
  68. function autoLikeThumbsUp() {
  69. const selector = Wlang.map(phrase => `button[aria-label^="${phrase}"]`).join(', ');
  70. const buttons = document.querySelectorAll(selector);
  71. if (buttons.length === 0) {
  72. console.warn('⚠️ Nebyla nalezena žádná tlačítka "Líbí se mi".');
  73. return;
  74. }
  75.  
  76. console.log(`🔹 Nalezeno ${buttons.length} komentářů k lajknutí.`);
  77. buttons.forEach((button, index) => {
  78. setTimeout(() => {
  79. if (!button.classList.contains('liked')) {
  80. button.click();
  81. console.log(`👍 Lajknut komentář #${index + 1}`);
  82. }
  83. }, getRandomDelay(index));
  84. });
  85. }
  86.  
  87. // Funkce pro generování náhodného zpoždění
  88. function getRandomDelay(index) {
  89. const minDelay = 500; // Minimum delay of 0.5 seconds
  90. const maxDelay = 2000; // Maximum delay of 2 seconds
  91. return minDelay + (Math.random() * (maxDelay - minDelay)) + (index * 1000);
  92. }
  93.  
  94. // Observer sledující změny v DOM (pro tlačítko)
  95. function observeDOM() {
  96. const observer = new MutationObserver(() => {
  97. createButton();
  98. });
  99. observer.observe(document.body, { childList: true, subtree: true });
  100. }
  101.  
  102. // Spustit observer pro tlačítko
  103. observeDOM();
  104. // Spuštění stylů při načtení skriptu
  105. addCustomStyles();
  106. })();