Greasy Fork is available in English.

Manatoki468 Direct Downloader

Descarga imágenes de capítulos de manga desde Manatoki468 directamente y asegura que se puedan visualizar correctamente.

// ==UserScript==
// @name         Manatoki468 Direct Downloader
// @namespace    shadows
// @version      1.5.2
// @description  Descarga imágenes de capítulos de manga desde Manatoki468 directamente y asegura que se puedan visualizar correctamente.
// @author       shadows
// @license      MIT
// @match        https://manatoki468.net/*
// @grant        GM_download
// ==/UserScript==
"use strict";

(function () {
    // URL base de las imágenes de manga
    const mangaImageBaseURL = "https://img2.newtoki20.org/data/file/comic";

    // Crear botón de descarga
    const downloadButton = document.createElement("button");
    downloadButton.textContent = "Descargar imágenes";
    downloadButton.style = `
        position: fixed;
        top: 10px;
        right: 10px;
        z-index: 10000;
        background-color: #28a745;
        color: white;
        border: none;
        padding: 10px 20px;
        font-size: 14px;
        border-radius: 5px;
        cursor: pointer;
    `;
    document.body.appendChild(downloadButton);

    // Evento de descarga
    downloadButton.addEventListener("click", async () => {
        // Seleccionar imágenes que contienen la URL base
        const images = Array.from(document.querySelectorAll("img[src], img[data-src]"))
            .map(img => img.src || img.dataset.src)
            .filter(url => url && url.startsWith(mangaImageBaseURL)); // Filtrar por URL específica

        if (images.length === 0) {
            alert("No se encontraron imágenes del manga para descargar.");
            return;
        }

        // Descargar cada imagen individualmente
        for (const [index, url] of images.entries()) {
            const fileName = `${String(index + 1).padStart(3, "0")}.jpg`;
            try {
                await downloadImage(url, fileName);
                console.log(`Descargada: ${fileName}`);
            } catch (err) {
                console.error(`Error al descargar ${fileName}:`, err);
            }
        }

        alert(`Se descargaron ${images.length} imágenes correctamente.`);
    });

    // Función para descargar una imagen usando GM_download con manejo de errores
    function downloadImage(url, fileName) {
        return new Promise((resolve, reject) => {
            GM_download({
                url: url,
                name: fileName,
                headers: {
                    Referer: "https://manatoki468.net/" // Encabezado para evitar bloqueos
                },
                onload: () => resolve(),
                onerror: (err) => reject(err),
            });
        });
    }
})();