Загрузить файлы в «/»

This commit is contained in:
Tina Pavlenko 2025-11-16 15:23:56 +00:00
parent 6bdbc0d685
commit d7c20a496b

45
script.js Normal file
View file

@ -0,0 +1,45 @@
(async function(){
const delay = ms => new Promise(r=>setTimeout(r,ms));
const UNSUB_DELAY = 900;
const CONFIRM_TIMEOUT = 2000;
function findUnsubButtons(){
return Array.from(document.querySelectorAll('ytd-subscribe-button-renderer button[aria-label^="Отменить подписку"], ytd-subscribe-button-renderer button'))
.filter(b => (b.textContent||'').toLowerCase().includes('вы подписаны') || (b.getAttribute('aria-label')||'').toLowerCase().includes('отменить подписку'));
}
async function waitAndConfirm(){
const start = Date.now();
while(Date.now() - start < CONFIRM_TIMEOUT){
const dialog = document.querySelector('tp-yt-paper-dialog yt-confirm-dialog-renderer, ytd-popup-container yt-confirm-dialog-renderer');
if(dialog){
const confirmBtn = dialog.querySelector('#confirm-button button, button[aria-label*="Отказаться"], button[aria-label*="Unsubscribe"]');
if(confirmBtn){ try{ confirmBtn.click(); return true; }catch(e){console.warn(e); return false; } }
}
await delay(150);
}
// fallback: глобальная кнопка по тексту
const global = Array.from(document.querySelectorAll('button, tp-yt-paper-button')).find(el=>(el.textContent||'').toLowerCase().includes('отказаться от подписки') || (el.textContent||'').toLowerCase().includes('отписаться'));
if(global){ try{ global.click(); return true; }catch(e){console.warn(e);} }
return false;
}
const buttons = findUnsubButtons();
if(buttons.length === 0){ console.log('Не найдено кнопок "Вы подписаны" на этой части страницы. Прокрутите и повторите.'); return; }
console.log(`Найдено ${buttons.length} кнопок. Начинаю...`);
let succeeded = 0;
for(const btn of buttons){
if(!btn || !btn.isConnected) continue;
try{
btn.scrollIntoView({behavior:'auto', block:'center'});
btn.click();
const confirmed = await waitAndConfirm();
if(confirmed) succeeded++;
await delay(UNSUB_DELAY);
}catch(e){
console.warn('Ошибка при обработке', e);
}
}
console.log(`Готово. Подтверждений выполнено: ${succeeded}/${buttons.length}.`);
})();