Created
April 11, 2026 07:50
-
-
Save Sinkmanu/214eb34a29eaf172de0b1365cdbfa8c9 to your computer and use it in GitHub Desktop.
Dislike to all songs of an artist in Youtube Music (avoid fucking AI-generated music)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // YouTube Music - Dislike all songs from an artist | |
| // 1. Ve a la página del artista en YouTube Music | |
| // 2. Haz clic en "Songs" / "Canciones" para ver todas las canciones | |
| // 3. Haz scroll hasta cargar todas las canciones que quieras | |
| // 4. Abre la consola del navegador (F12 > Console) | |
| // 5. Pega y ejecuta este script | |
| (async () => { | |
| const DELAY_MS = 800; // Delay entre acciones para no saturar | |
| const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); | |
| // Selecciona todos los botones de dislike en la lista de canciones | |
| const dislikeButtons = document.querySelectorAll( | |
| 'ytmusic-like-button-renderer tp-yt-paper-icon-button.dislike' | |
| ); | |
| if (dislikeButtons.length === 0) { | |
| // Selector alternativo (la UI cambia entre versiones) | |
| const altButtons = document.querySelectorAll( | |
| 'yt-button-shape[aria-label*="islike"], ' + | |
| 'yt-icon-button[aria-label*="islike"], ' + | |
| 'button[aria-label*="islike"]' | |
| ); | |
| if (altButtons.length === 0) { | |
| console.warn( | |
| '[!] No se encontraron botones de dislike. ' + | |
| 'Asegúrate de estar en la página de canciones del artista.' | |
| ); | |
| return; | |
| } | |
| console.log(`[*] Encontrados ${altButtons.length} botones (selector alt)`); | |
| for (let i = 0; i < altButtons.length; i++) { | |
| const btn = altButtons[i]; | |
| const pressed = btn.getAttribute('aria-pressed'); | |
| // Solo dar dislike si no está ya marcado | |
| if (pressed !== 'true') { | |
| btn.click(); | |
| console.log(`[+] Dislike ${i + 1}/${altButtons.length}`); | |
| await sleep(DELAY_MS); | |
| } else { | |
| console.log(`[-] Ya tiene dislike ${i + 1}/${altButtons.length}, skip`); | |
| } | |
| } | |
| console.log('[*] Proceso completado (selector alt)'); | |
| return; | |
| } | |
| console.log(`[*] Encontrados ${dislikeButtons.length} botones de dislike`); | |
| for (let i = 0; i < dislikeButtons.length; i++) { | |
| const btn = dislikeButtons[i]; | |
| const ariaPressed = btn.getAttribute('aria-pressed'); | |
| if (ariaPressed !== 'true') { | |
| btn.click(); | |
| console.log(`[+] Dislike ${i + 1}/${dislikeButtons.length}`); | |
| await sleep(DELAY_MS); | |
| } else { | |
| console.log(`[-] Ya tiene dislike ${i + 1}/${dislikeButtons.length}, skip`); | |
| } | |
| } | |
| console.log('[*] Proceso completado'); | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment