e621 Deleted Post Source Opener

If an e621 post has "status: deleted", this script opens the source URL in a new tab, prioritizing sources other than Inkbunny.

اعتبارا من 18-07-2025. شاهد أحدث إصدار.

// ==UserScript==
// @name         e621 Deleted Post Source Opener
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  If an e621 post has "status: deleted", this script opens the source URL in a new tab, prioritizing sources other than Inkbunny.
// @author       Gemini
// @match        https://e621.net/posts/*
// @grant        GM_openInTab
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';

    // 1. Проверяем, удален ли пост.
    // Ищем элемент списка, содержащий "Status:", и проверяем, есть ли в нем слово "Deleted".
    const infoListItems = document.querySelectorAll('#post-information ul li');
    let isDeleted = false;

    infoListItems.forEach(li => {
        const text = li.innerText.trim();
        if (text.startsWith('Status:') && text.includes('Deleted')) {
            isDeleted = true;
        }
    });

    // Если пост не удален, ничего не делаем.
    if (!isDeleted) {
        console.log('e621 Deleted Opener: Пост не удален.');
        return;
    }

    console.log('e621 Deleted Opener: Пост удален. Ищем источник...');

    // 2. Находим все доступные ссылки на источники.
    const sourceLinkElements = document.querySelectorAll('li.source-links a');
    if (sourceLinkElements.length === 0) {
        console.log('e621 Deleted Opener: Ссылки на источники не найдены.');
        return;
    }

    const allSources = Array.from(sourceLinkElements).map(a => a.href);

    // 3. Отдаем приоритет источникам, не являющимся Inkbunny.
    let preferredSource = null;
    const nonInkbunnySources = allSources.filter(url => !url.includes('inkbunny.net'));

    if (nonInkbunnySources.length > 0) {
        // Найден хотя бы один источник, который не является Inkbunny.
        preferredSource = nonInkbunnySources[0];
        console.log(`e621 Deleted Opener: Выбран источник, не являющийся Inkbunny: ${preferredSource}`);
    } else if (allSources.length > 0) {
        // Других источников нет, поэтому используем первую доступную ссылку.
        preferredSource = allSources[0];
        console.log(`e621 Deleted Opener: Найден только источник Inkbunny (или другой). Используем: ${preferredSource}`);
    }

    // 4. Открываем выбранный источник в новой вкладке.
    if (preferredSource) {
        // Небольшая задержка, чтобы избежать проблем с блокировщиками всплывающих окон.
        setTimeout(() => {
            console.log(`e621 Deleted Opener: Открываем ${preferredSource} в новой вкладке.`);
            GM_openInTab(preferredSource, { active: true });
        }, 500);
    } else {
        console.log('e621 Deleted Opener: Не удалось определить источник для открытия.');
    }
})();