x.com autoBtn

Clicks on "Block" and "Maybe later" buttons

当前为 2024-11-25 提交的版本,查看 最新版本

// ==UserScript==
// @name           x.com autoBtn
// @namespace      http://tampermonkey.net/
// @version        0.2
// @description    Clicks on "Block" and "Maybe later" buttons
// @author         CiNoP
// @license        GPL-3.0-only
// @match          https://x.com/*
// @icon           https://www.google.com/s2/favicons?sz=64&domain=x.com
// @grant          none
// ==/UserScript==
/* jshint esversion: 11 */
/* jshint asi: true */

(() => {
    let blockProcessButtonClicked = false;
    let blockProcessConfirmButtonClicked = false;
    function clickBlockButtonIfExists() {
        if (blockProcessButtonClicked) return;
        const blockButton = document.querySelector('div[data-testid="block"]');
        const ruBlockButton = document.querySelector('div[data-testid="В черный список"]');
        if (blockButton || ruBlockButton) {
            console.log('Кнопка блокировки найдена, ожидаем подтверждения...');
            (blockButton || ruBlockButton).addEventListener('click', () => {
                blockProcessButtonClicked = true;
                observeConfirmButton();
            })
        }
    }
    function clickConfirmButtonIfExists() {
        const confirmButton = Array.from(document.querySelectorAll('button[data-testid="confirmationSheetConfirm"]')).find(button =>
            button.textContent.includes('В черный список') || button.textContent.includes('Block')
        );
        if (confirmButton) {
            console.log('Кнопка подтверждения найдена, кликаю...');
            confirmButton.click();
            blockProcessConfirmButtonClicked = true;
            setTimeout(() => {
                blockProcessButtonClicked = false;
                blockProcessConfirmButtonClicked = false;
            }, 300)
        }
    }
    function observeConfirmButton() {
        const confirmObserver = new MutationObserver(() => {
            clickConfirmButtonIfExists()
        })
        confirmObserver.observe(document.body, {
            childList: true,
            subtree: true
        })
    }
    const blockObserver = new MutationObserver(() => {
        clickBlockButtonIfExists()
    })
    const blockObserverConfig = {
        childList: true,
        subtree: true,
        attributes: false
    }
    blockObserver.observe(document.body, blockObserverConfig)
    clickBlockButtonIfExists()
})();

(() => {
    let forYouButtonClicked = false
    function clickForYouButtonIfExists() {
        if (forYouButtonClicked) return
        const forYouButton = Array.from(document.querySelectorAll('a[role="tab"]')).find((el) =>
            el.textContent.trim() === "Для вас" || el.textContent.trim() === "For you"
        )
        if (forYouButton) {
            const buttonText = forYouButton.textContent.trim() === "Для вас" ? "Не сейчас" : "Maybe later";
            const targetButton = Array.from(document.querySelectorAll('button')).find(
                (btn) => btn.textContent.trim() === buttonText
            );
            if (targetButton) {
                console.log(`Кнопка "${buttonText}" найдена, кликаю...`);
                targetButton.click();
                forYouButtonClicked = true;
            }
        }
    }
    const forYouObserver = new MutationObserver((mutationsList) => {
        for (const mutation of mutationsList) {
            if (mutation.type === 'childList' || mutation.type === 'attributes') {
                clickForYouButtonIfExists()
            }
        }
    })
    const forYouObserverConfig = {
        childList: true,
        subtree: true,
        attributes: false
    }
    forYouObserver.observe(document.body, forYouObserverConfig)
    clickForYouButtonIfExists()
})()