Greasy Fork

Greasy Fork is available in English.

18直達 18comic

直達18comic車牌

当前为 2025-10-08 提交的版本,查看 最新版本

// ==UserScript==
// @name         18直達 18comic
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  直達18comic車牌
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_openInTab
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    if (window.__18comic_menu_registered__) return;
    window.__18comic_menu_registered__ = true;
    if (window.top !== window.self) return;

    // ✅ 網址
    const BASE_URL = 'https://18comic.ink/album';

    const getBlacklist = () => GM_getValue('blacklist', []);
    const saveBlacklist = list => GM_setValue('blacklist', list);
    const isInBlacklist = num => getBlacklist().includes(num);
    const addToBlacklist = num => {
        const list = getBlacklist();
        if (!list.includes(num)) {
            list.push(num);
            saveBlacklist(list);
            return true;
        }
        return false;
    };

    GM_registerMenuCommand('直達', () => {
        if (window.__18comic_busy__) return;
        window.__18comic_busy__ = true;

        setTimeout(() => {
            const userInput = prompt('請輸入內容(支援數字):');
            window.__18comic_busy__ = false;
            if (userInput === null) return;

            const numbersOnly = userInput.replace(/\D/g, '');
            if (numbersOnly && isInBlacklist(numbersOnly)) {
                alert(`你輸入的 ${numbersOnly} 在黑名單中,已停止跳轉`);
                return;
            }

            const targetUrl = numbersOnly
                ? `${BASE_URL}/${numbersOnly}/`
                : BASE_URL.replace(/\/album$/, '');

            try {
                GM_openInTab(targetUrl, { active: false, insert: true, setParent: true });
            } catch {
                window.open(targetUrl, '_blank', 'noopener,noreferrer');
            }
        }, 0);
    });

    GM_registerMenuCommand('新增黑名單', () => {
        setTimeout(() => {
            const userInput = prompt('請輸入要加入黑名單的內容(支援數字):');
            if (userInput === null) return;
            const numbersOnly = userInput.replace(/\D/g, '');
            if (!numbersOnly) return alert('沒有有效的數字');
            alert(addToBlacklist(numbersOnly)
                ? `已將 ${numbersOnly} 加入黑名單`
                : `${numbersOnly} 已存在於黑名單`);
        }, 0);
    });

    GM_registerMenuCommand('查看黑名單', () => {
        setTimeout(() => {
            const list = getBlacklist();
            alert(list.length ? `黑名單內容:\n${list.join('\n')}` : '黑名單是空的');
        }, 0);
    });

    GM_registerMenuCommand('清空黑名單', () => {
        setTimeout(() => {
            if (confirm('確定要清空所有黑名單嗎?')) {
                saveBlacklist([]);
                alert('黑名單已清空');
            }
        }, 0);
    });

})();