// ==UserScript== // @name YNJN Full-Page Downloader // @namespace ynjn-downloader // @version 0.1 // @description Descarga imágenes grandes (páginas) de Young Jump Web Comics (YNJN) // @match https://ynjn.jp/title/*/chapter/* // @require https://cdn.jsdelivr.net/npm/jszip@3/dist/jszip.min.js // @require https://cdn.jsdelivr.net/npm/file-saver@2/dist/FileSaver.min.js // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Crear un botón para descargar const downloadBtn = document.createElement('button'); downloadBtn.textContent = 'Descargar Páginas Grandes'; downloadBtn.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; `; document.body.appendChild(downloadBtn); // Al hacer clic, busca imágenes y genera el ZIP downloadBtn.addEventListener('click', async () => { downloadBtn.disabled = true; downloadBtn.textContent = 'Descargando...'; try { // Capturar imágenes precargadas en const preloadLinks = Array.from(document.querySelectorAll('link[rel="preload"]')) .map(link => link.href) .filter(href => href.includes('cdn.ynjn.jp/public/')); // Capturar imágenes grandes en const bigImages = Array.from(document.querySelectorAll('img')) .map(img => img.src) .filter(src => src.includes('cdn.ynjn.jp/public/')); // Unir ambas listas y quitar duplicados const allUrls = Array.from(new Set([...preloadLinks, ...bigImages])); if (!allUrls.length) { alert('No se encontraron imágenes grandes. Asegúrate de cargar todo el capítulo.'); resetButton(); return; } // Crear un ZIP const zip = new JSZip(); // Descargar cada imagen for (let i = 0; i < allUrls.length; i++) { const url = allUrls[i]; console.log(`Descargando página ${i+1}: ${url}`); const resp = await fetch(url); const blob = await resp.blob(); const fileName = String(i+1).padStart(3, '0') + '.jpg'; zip.file(fileName, blob); } // Generar y guardar el ZIP const zipContent = await zip.generateAsync({ type: 'blob' }); saveAs(zipContent, 'ynjn_paginas.zip'); alert(`Descarga completa: ${allUrls.length} imágenes grandes`); } catch (error) { console.error('Error al descargar páginas:', error); alert('Ocurrió un error. Revisa la consola para más detalles.'); } resetButton(); }); function resetButton() { downloadBtn.disabled = false; downloadBtn.textContent = 'Descargar Páginas Grandes'; } })();