Youtube block all, not interested in all, dismiss all

不感兴趣, दिलचस्पी नहीं है, 興味なし, 관심 없음, Kein Interesse,لا يهمني, Не интересует, Não tenho interesse, No me interesa

Pada tanggal 29 Agustus 2024. Lihat %(latest_version_link).

// ==UserScript==
// @name         Youtube block all, not interested in all, dismiss all
// @version      0.1
// @description  不感兴趣, दिलचस्पी नहीं है, 興味なし, 관심 없음, Kein Interesse,لا يهمني, Не интересует, Não tenho interesse, No me interesa
// @author       evanlai
// @match        https://www.youtube.com/*
// @require            https://openuserjs.org/src/libs/sizzle/GM_config.js
// @require            https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert.min.js
// @require            https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js
// @grant              GM_getValue
// @grant              GM_setValue
// @grant              none
// @namespace https://gf.zukizuki.org/users/732057
// ==/UserScript==
if (window.trustedTypes && window.trustedTypes.createPolicy) {
    window.trustedTypes.createPolicy('default', {
    createHTML: string => string,
    createScriptURL: string => string,
    createScript: string => string,
    });
}
function wait(ms) {
    return new Promise((resolve) => {
        setTimeout(resolve, ms);
    });
}
function inArray(array, element) {
  return array.indexOf(element) !== -1;
}


var runflag = true;
var firstEnterThisPage = true;
async function dismissCurrent() {
    let clickedSomething = false;
    let foundAusblenden = false;

    for (const item of document.querySelectorAll('ytd-menu-service-item-renderer')) {

        if (item.icon === (localStorage.getItem('videoOrCreator') === "video" ? "REMOVE" : "NOT_INTERESTED")) {
            clickedSomething = true;
            item.click();
        }
        // else if (item.icon === "__") {
        //     foundAusblenden = item;
        // }
    }
    if (!clickedSomething && foundAusblenden !== false) {
        foundAusblenden.click();
    }
    return true;
}
async function dismissAll() {
    let list = document.querySelectorAll('ytd-rich-grid-media button[aria-label]');

    while (firstEnterThisPage && list.length < 1) {
        await wait(1000);
        list = document.querySelectorAll('ytd-rich-grid-media button[aria-label]');
    }
    firstEnterThisPage = false;

    let i = 0;
    for (let item of list) {
        item.click();
        await wait(50);
        await dismissCurrent();
        await wait(100);
        i++;
        if (i >= parseInt(localStorage.getItem('maximumNumberOfBlocksPerSession'))) break;
    }
    if (runflag) {
        runflag = false;
        // await dismissAll();
    }
    window.location.reload();
}

window.dismissAll = function() {
    dismissAll();
}
window.openGmcSettings = function() {
    let settings = document.getElementById('J_settings');
    settings.style.display = '';

    swal({
        content: settings,
        buttons: {
            // confirm: {
            //     text: "save",
            //     value: 1
            // },
            cancel: "close",
        },
    }).then(async (value) => {
        settings.style.display = 'none';
        // if (value !== 1) return false

    });
}

function createButton() {
    var elementForInsertNewButton = document.querySelector('#start') || document.querySelector('#logo-icon') || document.querySelector('#country-code');

    var dismissAllLink = document.createElement('a');
    dismissAllLink.id = 'J_dismiss_all';
    dismissAllLink.href = 'javascript:';
    dismissAllLink.style.display = 'inline-flex';
    dismissAllLink.style.marginLeft = '2em';
    dismissAllLink.style.alignItems = 'center';
    dismissAllLink.style.verticalAlign = 'middle';
    dismissAllLink.style.color = 'gray';
    dismissAllLink.style.fontSize = '2em';
    dismissAllLink.style.lineHeight = '2em';
    dismissAllLink.style.textDecoration = 'none';
    dismissAllLink.onclick = window.dismissAll;
    dismissAllLink.textContent = '⟳';

    var openGmcSettingsLink = document.createElement('a');
    openGmcSettingsLink.id = 'J_open_settings';
    openGmcSettingsLink.href = 'javascript:';
    openGmcSettingsLink.style.display = 'inline-flex';
    openGmcSettingsLink.style.marginTop = '1px';
    openGmcSettingsLink.style.marginLeft = '16px';
    openGmcSettingsLink.style.alignItems = 'center';
    openGmcSettingsLink.style.verticalAlign = 'middle';
    openGmcSettingsLink.style.color = 'gray';
    openGmcSettingsLink.style.fontSize = '2em';
    openGmcSettingsLink.style.lineHeight = '2em';
    openGmcSettingsLink.style.textDecoration = 'none';
    openGmcSettingsLink.onclick = window.openGmcSettings;
    openGmcSettingsLink.textContent = '⋮';

    elementForInsertNewButton.appendChild(dismissAllLink);
    elementForInsertNewButton.appendChild(openGmcSettingsLink);
}

createButton();

// settings
document.addEventListener('alpine:init', () => {
    var maximumNumberOfBlocksPerSession = localStorage.getItem('maximumNumberOfBlocksPerSession');
    if(typeof maximumNumberOfBlocksPerSession === 'undefined') {
        maximumNumberOfBlocksPerSession = 12;
        localStorage.setItem('maximumNumberOfBlocksPerSession', maximumNumberOfBlocksPerSession);
    }
    Alpine.store('maximumNumberOfBlocksPerSession', {
        value: maximumNumberOfBlocksPerSession,
        valueHasChanged(){
            localStorage.setItem('maximumNumberOfBlocksPerSession', this.value);
        }
    })


    var autoMode = localStorage.getItem('autoMode');
    if(typeof autoMode === 'undefined') {
        autoMode = false;
        localStorage.setItem('autoMode', autoMode);
    }
    Alpine.store('autoMode', {
        on: autoMode,
        toggle() {
            this.on = ! this.on
            localStorage.setItem('autoMode', this.on);
        }
    })


    var videoOrCreator = localStorage.getItem('videoOrCreator');
    if(typeof videoOrCreator === 'undefined') {
        videoOrCreator = 'video';
        localStorage.setItem('videoOrCreator', videoOrCreator);
    }
    Alpine.store('videoOrCreator', {
        value: videoOrCreator,

        toggle() {
            this.value = this.value === "creator" ? "video" : "creator";
            localStorage.setItem('videoOrCreator', this.value);
        }
    })

     if(localStorage.getItem('autoMode') && localStorage.getItem('autoMode') !== 'false') window.dismissAll()
});

var gmcSettings = document.createElement('div');
gmcSettings.id = 'J_settings';

gmcSettings.innerHTML = `
    <span>Maximum number of blocks per session:<input type="text" x-data="$store.maximumNumberOfBlocksPerSession" x-model="value" x-init="$watch('value', value => $store.maximumNumberOfBlocksPerSession.valueHasChanged())"></span>
    <button x-data @click="$store.autoMode.toggle()">Automatically refresh the page and process all</button> ---> <span x-data="$store.autoMode" x-text="on"></span>
    <button x-data @click="$store.videoOrCreator.toggle()">Block video or creator</button> ---> <span x-data="$store.videoOrCreator" x-text="value"></span>

`;
document.querySelector('body').appendChild(gmcSettings);