Greasy Fork

YNJN Detector de Imágenes (Actualizado 2025)

Detecta imágenes grandes en capítulos de Young Jump Web Comics (YNJN) sin descargarlas

目前为 2025-02-19 提交的版本。查看 最新版本

// ==UserScript==
// @name         YNJN Detector de Imágenes (Actualizado 2025)
// @namespace    ynjn-downloader
// @version      0.4
// @description  Detecta imágenes grandes en capítulos de Young Jump Web Comics (YNJN) sin descargarlas
// @match        https://ynjn.jp/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Espera a que la página cargue completamente
    function waitForPageLoad(callback) {
        if (document.readyState === 'complete') {
            callback();
        } else {
            window.addEventListener('load', callback);
        }
    }

    waitForPageLoad(() => {
        console.log("📥 Script YNJN Detector activo");

        // Crear un botón para iniciar la detección
        const detectBtn = document.createElement('button');
        detectBtn.textContent = 'Detectar Imágenes';
        detectBtn.style.cssText = `
            position: fixed;
            top: 10px;
            right: 10px;
            z-index: 9999;
            background: #e63946;
            color: #fff;
            padding: 8px 12px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 14px;
        `;
        document.body.appendChild(detectBtn);

        // Al hacer clic, se hace scroll automático y se detectan las imágenes
        detectBtn.addEventListener('click', async () => {
            detectBtn.disabled = true;
            detectBtn.textContent = 'Cargando imágenes...';

            await autoScroll();
            const imageUrls = getAllImages();
            console.log('Imágenes encontradas:', imageUrls);

            if (!imageUrls.length) {
                alert('⚠️ No se encontraron imágenes grandes. Intenta hacer scroll hasta el final del capítulo.');
            } else {
                alert(`✅ Se encontraron ${imageUrls.length} imágenes grandes.`);
            }
            resetButton();
        });
    });

    // Función para hacer scroll automático hasta el final de la página
    async function autoScroll() {
        return new Promise(resolve => {
            let totalHeight = 0;
            const distance = 100;
            const timer = setInterval(() => {
                window.scrollBy(0, distance);
                totalHeight += distance;
                if (totalHeight >= document.body.scrollHeight) {
                    clearInterval(timer);
                    // Esperar un momento extra para que se carguen las imágenes lazy
                    setTimeout(resolve, 1000);
                }
            }, 200);
        });
    }

    // Función para recolectar URLs de imágenes (revisa src y data-src)
    function getAllImages() {
        const imgs = Array.from(document.querySelectorAll('img'));
        const srcs = imgs.map(img => img.src || img.dataset.src);
        // Filtrar imágenes que tengan extensión común o que incluyan 'ynjn' en la URL
        const filtered = srcs.filter(src => {
            if (!src) return false;
            return src.match(/\.(jpe?g|png|webp)$/i) || src.includes('ynjn');
        });
        return Array.from(new Set(filtered));
    }

    // Restablece el botón
    function resetButton() {
        const detectBtn = document.querySelector('button');
        if (detectBtn) {
            detectBtn.disabled = false;
            detectBtn.textContent = 'Detectar Imágenes';
        }
    }
})();