MyAnimeList: Mass-delete your Plan to Watch list

When on the Plan to Watch page, goes through and deletes every single entry until there's none left. Should work with the majority of list styles, but could break if the default modern style isn't used. Make sure to disable this script after you're done using it.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MyAnimeList: Mass-delete your Plan to Watch list
// @namespace    plennhar-myanimelist-mass-delete-your-plan-to-watch-list
// @version      1.0
// @description  When on the Plan to Watch page, goes through and deletes every single entry until there's none left.  Should work with the majority of list styles, but could break if the default modern style isn't used.  Make sure to disable this script after you're done using it.
// @author       Plennhar
// @match        https://myanimelist.net/animelist/*?status=6
// @match        https://myanimelist.net/ownlist/anime/*/edit?hideLayout
// @match        https://myanimelist.net/ownlist/anime/*/delete?hideLayout=1
// @grant        none
// @license      GPL-3.0-or-later
// ==/UserScript==
// SPDX-FileCopyrightText: 2024 Plennhar
// SPDX-License-Identifier: GPL-3.0-or-later

(function() {
    'use strict';

    // Automatically click OK to confirm deletions
    window.confirm = function() {
        return true;
    };

    // Check if the page is a Plan to Watch page
    function checkUrl() {
        return window.location.search.includes('?status=6');
    }

    // Clicking edit
    function handleDeletion(editButtons, index, originalUrl) {
        if (index < editButtons.length) {
            window.location.href = editButtons[index].href;
            localStorage.setItem('malDeleteIndex', index);
            localStorage.setItem('malOriginalUrl', originalUrl);
        } else {
            localStorage.removeItem('malDeleteIndex');
            localStorage.removeItem('malOriginalUrl');
        }
    }

    // Clicking the Delete button
    function processDeletion() {
        const deleteButton = document.querySelector('input[value="Delete"]');
        if (deleteButton) {
            deleteButton.click();
        } else {
            setTimeout(processDeletion, 500);
        }
    }

    // Redirect back to original page after deletion
    function handleRedirection() {
        const originalUrl = localStorage.getItem('malOriginalUrl');
        if (originalUrl) {
            window.location.href = originalUrl;
        }
    }

    // Main function
    function startScript() {
        if (checkUrl()) {
            const editButtons = document.querySelectorAll('span.edit a');
            if (editButtons.length === 0) return;

            const index = localStorage.getItem('malDeleteIndex') ? parseInt(localStorage.getItem('malDeleteIndex')) : 0;
            const originalUrl = window.location.href;

            handleDeletion(editButtons, index, originalUrl);
        } else if (window.location.href.includes('/edit?hideLayout')) {
            processDeletion();
        } else if (window.location.href.includes('/delete?hideLayout=1')) {
            handleRedirection();
        }
    }

    setTimeout(startScript, 1000); // Delay to ensure page load
})();