Greasy Fork

Greasy Fork is available in English.

Comic Earthstar Canvas Downloader

Captura las páginas del manga desde el canvas de Comic Earthstar y las descarga como imágenes completas.

当前为 2024-11-27 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Comic Earthstar Canvas Downloader
// @namespace    shadows
// @version      1.3.0
// @description  Captura las páginas del manga desde el canvas de Comic Earthstar y las descarga como imágenes completas.
// @author       shadows
// @license      MIT
// @match        https://comic-earthstar.com/episode/*
// @grant        GM_download
// @require      https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js
// ==/UserScript==

"use strict";

(function () {
    // Crear botón para iniciar descargas
    const downloadButton = document.createElement("button");
    downloadButton.textContent = "Descargar Manga";
    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 clic para capturar y descargar imágenes
    downloadButton.addEventListener("click", async () => {
        const canvasList = document.querySelectorAll("canvas");
        if (canvasList.length === 0) {
            alert("No se encontró ningún canvas para capturar.");
            return;
        }

        for (const [index, canvas] of canvasList.entries()) {
            try {
                await captureAndDownloadCanvas(canvas, index);
                console.log(`Página ${index + 1} descargada.`);
            } catch (err) {
                console.error(`Error al capturar página ${index + 1}:`, err);
            }
        }

        alert("Se descargaron todas las páginas del manga.");
    });

    // Función para capturar y descargar una página del canvas
    function captureAndDownloadCanvas(canvas, index) {
        return new Promise((resolve, reject) => {
            html2canvas(canvas)
                .then((capturedCanvas) => {
                    const imageUrl = capturedCanvas.toDataURL("image/png");
                    GM_download({
                        url: imageUrl,
                        name: `pagina_${String(index + 1).padStart(2, "0")}.png`,
                        onload: resolve,
                        onerror: reject,
                    });
                })
                .catch(reject);
        });
    }
})();