Комментарий #12929385

osmy2026
скрипт:

// ==UserScript==
// @name         Shiki.one & Shikimori.one: Direct Image Links
// @namespace    http://your.namespace.com
// @version      1.1
// @description Заменяет проксированные изображения на прямые ссылки (поддерживает shiki.one и shikimori.one)
// @author       You
// @match        https://shiki.one/*
// @match        https://shikimori.one/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для декодирования URL из параметра url
    function getDirectUrl(proxiedSrc) {
        try {
            const urlParams = new URLSearchParams(proxiedSrc.split('?')[1]);
            const encodedUrl = urlParams.get('url');
            if (encodedUrl) {
                return decodeURIComponent(encodedUrl);
            }
        } catch (e) {
            console.warn('Ошибка при обработке URL:', proxiedSrc, e);
        }
        return null;
    }

    // Функция для проверки, является ли ссылка проксированной
    function isProxiedUrl(src) {
        return src && (
            src.includes('camo-v3.shiki.one') ||
            src.includes('camo-v3.shikimori.one')
        );
    }

    // Функция для обновления src у изображений
    function updateImageSrc() {
        const images = document.querySelectorAll('img[src]');
        images.forEach(img => {
            if (isProxiedUrl(img.src)) {
                const directUrl = getDirectUrl(img.src);
                if (directUrl) {
                    img.src = directUrl;
                    // Очищаем srcset, если есть (чтобы не мешал)
                    if (img.srcset) {
                        img.srcset = '';
                    }
                    console.log('Заменено:', img.src, '→', directUrl);
                } else {
                    console.warn('Не удалось извлечь прямую ссылку из:', img.src);
                }
            }
        });
    }

    // Запускаем при загрузке страницы
    window.addEventListener('load', updateImageSrc);

    // Наблюдаем за динамически добавляемыми элементами
    const observer = new MutationObserver(updateImageSrc);
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // Дополнительно проверяем после любых изменений в DOM
    document.addEventListener('DOMContentLoaded', updateImageSrc);
})();
Ответы
_Just_Monika_95_
_Just_Monika_95_#
@osmy2026,
<<-Иди глянь @Graf_NEET,
назад
Твой комментарий
Вернуться к редактированию
Предпросмотр
Скрыть