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.

Versione datata 18/07/2025. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==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: Не удалось определить источник для открытия.');
    }
})();