// ==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 // @downloadURL 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'; } } })();