Skip to content

Instantly share code, notes, and snippets.

@marcocarvalho
Last active November 5, 2020 20:27
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcocarvalho/e5247dc3b0f339fff3e31c07ca4f81bd to your computer and use it in GitHub Desktop.
Save marcocarvalho/e5247dc3b0f339fff3e31c07ca4f81bd to your computer and use it in GitHub Desktop.
Mass unsubscribe from youtube channel subscriptions using whitelist
const whitelist = ['Cancelar inscrição de Kurzgesagt – In a Nutshell.',
'Cancelar inscrição de 3D Geek Show - Impressão 3D.',
'Cancelar inscrição de ABANAorg.',
'Cancelar inscrição de Adam Savage’s Tested.',
'Cancelar inscrição de Adilson Carvalho.',
'Cancelar inscrição de Alec Steele.',
'Cancelar inscrição de Alexandre Benchimol.',
'Cancelar inscrição de Alexandre Bigunas.',
'Cancelar inscrição de Aquele Flau [OFICIAL].',
'Cancelar inscrição de Atila Iamarino.',
'Cancelar inscrição de Black Bear Forge.',
'Cancelar inscrição de Blender Guru.',
'Cancelar inscrição de Bobby Duke Arts.',
'Cancelar inscrição de Bruno Garschagen.',
'Cancelar inscrição de Canal Oficinando.',
'Cancelar inscrição de carloscaval.',
'Cancelar inscrição de Cid Cidoso.',
'Cancelar inscrição de Crafted Workshop.',
'Cancelar inscrição de Cutelaria Baioco: Ciência e Arte.',
'Cancelar inscrição de D. Jobim.',
'Cancelar inscrição de D.Braguim Facas Custom.',
'Cancelar inscrição de Desert Owl Forge.',
'Cancelar inscrição de Du Sturaro Facas Custom.',
'Cancelar inscrição de Evan and Katelyn Gaming.',
'Cancelar inscrição de EvanAndKatelyn.',
'Cancelar inscrição de Fabio Akita.',
'Cancelar inscrição de Faraway Forge.',
'Cancelar inscrição de Fireball Tool.',
'Cancelar inscrição de Floris Postmes.',
'Cancelar inscrição de Flow Podcast.',
'Cancelar inscrição de frank howarth.',
'Cancelar inscrição de Funny Troll.',
'Cancelar inscrição de Gaveta.',
'Cancelar inscrição de GB CUTELARIA.',
'Cancelar inscrição de Glen GS Tongs.',
'Cancelar inscrição de Gloria Alvarez.',
'Cancelar inscrição de Haponiuk.',
'Cancelar inscrição de Hjorvardhr - Vinícius Ferreira Arruda.',
'Cancelar inscrição de How To Make Everything.',
'Cancelar inscrição de Hugo Teixeira Cutelaria.',
'Cancelar inscrição de Ideias Radicais.',
'Cancelar inscrição de Ilha de Barbados.',
'Cancelar inscrição de Instituto Mises Brasil.',
'Cancelar inscrição de International Young Smiths Training Center.',
'Cancelar inscrição de Ismael Biegelmeier.',
'Cancelar inscrição de izzynobre.',
'Cancelar inscrição de Joey van der Steeg.',
'Cancelar inscrição de Jovem Nerd.',
'Cancelar inscrição de Kurzgesagt – In a Nutshell.',
'Cancelar inscrição de KyleRoyerKnives.',
'Cancelar inscrição de Lizandro Bertoni.',
'Cancelar inscrição de Luiz Felipe Pondé.',
'Cancelar inscrição de LumberJills.',
'Cancelar inscrição de Make Something.',
'Cancelar inscrição de Manual do Mundo.',
'Cancelar inscrição de Master Engraver TV.',
'Cancelar inscrição de Matthias Wandel.',
'Cancelar inscrição de minutephysics.',
'Cancelar inscrição de Nerdologia.',
'Cancelar inscrição de Nerdwriter1.',
'Cancelar inscrição de Nick Wheeler.',
'Cancelar inscrição de O Fisico Turista.',
'Cancelar inscrição de Oficina de Casa.',
'Cancelar inscrição de Old Hickory Forge.',
'Cancelar inscrição de Podpah.',
'Cancelar inscrição de Practical Engineering.',
'Cancelar inscrição de Primitive Technology.',
'Cancelar inscrição de Prince Armory.',
'Cancelar inscrição de Professor Berardo.',
'Cancelar inscrição de Provoca.',
'Cancelar inscrição de Pula Muralha.',
'Cancelar inscrição de Rafi Bastos.',
'Cancelar inscrição de Redelease.',
'Cancelar inscrição de Spotniks.',
'Cancelar inscrição de Super Izzy World.',
'Cancelar inscrição de thang010146.',
'Cancelar inscrição de That Works.',
'Cancelar inscrição de Tom Silva.',
'Cancelar inscrição de TomWoodsTV.',
'Cancelar inscrição de Torbjörn Åhman.',
'Cancelar inscrição de Vlog do Manual do Mundo.',
'Cancelar inscrição de Área Secreta.',
'Cancelar inscrição de Matando Robôs Gigantes.']
var hardStop = false;
var unsubscribeVisible = function(unsubscribeButton) {
if( (whitelist.indexOf(unsubscribeButton.ariaLabel) != -1 ) || unsubscribeButton.ariaLabel.match(/Inscreva-se/)){
return Promise.resolve("skipped: " + unsubscribeButton.ariaLabel);
}
return new Promise((res) => {
unsubscribeButton.click();
getConfirmButton().then((btn) => {
btn.click();
setTimeout(() => res("Unsubscribed: " + unsubscribeButton.ariaLabel), 100);
});
})
}
var getConfirmButton = function(){
return new Promise((res) => {
var interval = setInterval(() => {
var btn = document.getElementById("confirm-button");
if(btn) {
clearInterval(interval);
res(btn);
}
}, 50);
});
}
var youtubeUnsubscriber = function() {
var channels = Array.from(document.querySelectorAll("ytd-channel-renderer:not(.ytd-item-section-renderer)"));
return channels.reduce(
(p, channel) => {
return p.then(function(msg){
console.log(msg);
return unsubscribeVisible(channel.querySelector('paper-button.ytd-subscribe-button-renderer'));
});
}, Promise.resolve("begin")
);
}
youtubeUnsubscriber();
// To generate while list:
// document.querySelectorAll('.ytd-subscribe-button-renderer').forEach(i => console.log(i.ariaLabel))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment