Greasy Fork is available in English.

百度网盘不限速下载-KubeDown

百度网盘不限速下载-KubeDown-Script

Antes de proceder a la instalación, Greasy Fork te recuerda que este script contiene características potencialmente no deseables, que el autor incluye en beneficio propio en detrimento tuyo. Y pueden no gustarte.

Este script solo funciona una vez te das de alta en algún servicio, forzándote a unirte a un grupo, suscribirte a un canal o hacer «me gusta» en una página.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==

// @name 百度网盘不限速下载-KubeDown
// @description 百度网盘不限速下载-KubeDown-Script

// @version 2.4
// @author KubeDown

// @antifeature membership

// @license AGPL-3.0

// @icon https://p1.meituan.net/csc/6a347940f064146525be36b80541490124528.png

// @resource https://cdn.staticfile.org/limonte-sweetalert2/11.7.1/sweetalert2.min.css

// @require https://cdn.staticfile.org/limonte-sweetalert2/11.7.1/sweetalert2.all.min.js
// @require https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js

// @grant          GM_xmlhttpRequest

// @match *://pan.baidu.com/*

// @connect      kubedown.com

// @connect      meituan.net

// @connect      staticfile.org

// @connect      baidu.com
// @connect      alidns.com
// @namespace https://greasyfork.org/users/1057306
// ==/UserScript==

(() => {
    if (window.location.pathname === "/disk/home") {
        window.location.replace("./main");
    }

    AddElement();

    function AddElement() {
        if (document.getElementById("KubeDown") === null) {
            {
                const newbutton = document.createElement("button");

                newbutton.id = "KubeDown";
                newbutton.className = "u-button nd-file-list-toolbar-action-item u-button--primary";
                newbutton.style.marginRight = "8px";
                newbutton.innerText = "KubeDown";

                document.querySelector("div.wp-s-agile-tool-bar__header").prepend(newbutton);
            }

            {
                const newbutton = document.createElement("button");

                newbutton.id = "KubeDownStatus";
                newbutton.className = "u-button nd-file-list-toolbar-action-item u-button--primary";
                newbutton.style.marginRight = "8px";
                newbutton.innerText = "KubeDown Status";

                document.querySelector("div.wp-s-agile-tool-bar__header").prepend(newbutton);
            }
        } else {
            setTimeout(() => {
                AddElement();
            }, 100);
        }
    }

    GetNotify();

    function GetNotify() {
        GM_xmlhttpRequest({
            method: "GET",
            url: "https://dns.alidns.com/resolve?type=TXT&name=notify.kubedown.com",
            onload: function (response) {
                try {
                    const jsondata = JSON.parse(response.responseText);
                    let base64 = jsondata.Answer[0].data;

                    for (let i = 0; i < 100; i++) {
                        base64 = base64.replace(`\"`, "").replace(`"`, "").replace(" ", "");
                    }

                    const text = decodeURIComponent(escape(atob(base64)));

                    if (text !== "") {
                        Swal.fire({
                            icon: "info",
                            title: "KubeDown - 通知",
                            text: text,
                            confirmButtonText: "关闭",
                        });
                    }
                } catch (e) {}
            },
        });
    }

    document.getElementById("KubeDown").addEventListener("click", () => {
        let list = document.getElementsByClassName("wp-s-pan-table__body-row mouse-choose-item selected");
        if (list.length === 0) {
            list = document.getElementsByClassName("wp-s-file-grid-list__item text-center cursor-p mouse-choose-item is-checked");
            if (list.length === 0) {
                list = document.getElementsByClassName("wp-s-file-contain-list__item text-center cursor-p mouse-choose-item is-checked");
                if (list.length === 0) {
                    Swal.fire({
                        icon: "info",
                        title: "请选择一个文件",
                        confirmButtonText: "关闭",
                    });
                }
            }
        }

        if (list.length === 1) {
            const fileid = list[0].getAttribute("data-id");

            if (fileid === "" || fileid === null) {
                Swal.fire({
                    icon: "error",
                    title: "获取文件ID错误",
                    confirmButtonText: "关闭",
                });

                return;
            }

            Swal.fire({
                title: "text",
                title: "正在获取下载链接",
                allowOutsideClick: false,
                didOpen: () => {
                    Swal.showLoading();

                    const Token = localStorage.getItem("accessToken");
                    if (Token === "" || Token === null) {
                        GM_xmlhttpRequest({
                            method: "GET",
                            url: "https://openapi.baidu.com/oauth/2.0/authorize?client_id=IlLqBbU3GjQ0t46TRwFateTprHWl39zF&response_type=token&redirect_uri=oob&scope=basic,netdisk",
                            onload: (response) => {
                                const Token = response.finalUrl.match(/access_token=([^&]+)/)?.[1];

                                if (Token === "" || Token === null || Token === undefined) {
                                    Swal.fire({
                                        icon: "error",
                                        title: "获取百度网盘授权错误",
                                        text: "请手动复制 “https://openapi.baidu.com/oauth/2.0/authorize?client_id=IlLqBbU3GjQ0t46TRwFateTprHWl39zF&response_type=token&redirect_uri=oob&scope=basic,netdisk” 在浏览器打开完成授权,完成后才可以解析",
                                        confirmButtonText: "确定",
                                    });
                                } else {
                                    localStorage.setItem("accessToken", Token);
                                    window.location.reload();
                                }
                            },
                            onerror: () => {
                                Swal.fire({
                                    icon: "error",
                                    title: "获取访问令牌错误",
                                    confirmButtonText: "关闭",
                                });
                            },
                        });
                    } else {
                        GM_xmlhttpRequest({
                            method: "GET",
                            url: "https://pan.baidu.com/rest/2.0/xpan/multimedia?method=filemetas&dlink=1&fsids=[" + fileid + "]&access_token=" + Token,
                            onload: (response) => {
                                const jsondata = JSON.parse(response.responseText);
                                if (jsondata.list === undefined || jsondata.list.length === 0 || jsondata.list[0].dlink === undefined || jsondata.list[0].dlink === "") {
                                    Swal.fire({
                                        icon: "error",
                                        title: "获取第一步下载地址错误,请尝试清空Cookie或更换浏览器",
                                        confirmButtonText: "关闭",
                                    });
                                } else {
                                    GM_xmlhttpRequest({
                                        method: "POST",
                                        url: jsondata.list[0].dlink.replace("d.pcs.baidu.com", "api.kubedown.com").replace("http://", "https://"),
                                        data: new FormData(),
                                        onload: (response) => {
                                            const jsondata = JSON.parse(response.responseText);
                                            const status = jsondata.status;
                                            const downloadlink = jsondata.downloadlink;
                                            const useragent = jsondata.useragent;

                                            if (status) {
                                                if (downloadlink === "" || downloadlink === undefined || useragent === "" || useragent === undefined) {
                                                    Swal.fire({
                                                        icon: "error",
                                                        title: "数据异常",
                                                        confirmButtonText: "关闭",
                                                    });
                                                } else {
                                                    Swal.fire({
                                                        icon: "success",
                                                        title: "获取下载地址成功",
                                                        html: `<input id="swal-input1" class="swal2-input" value="` + downloadlink + `"><input id="swal-input2" class="swal2-input" value="` + useragent + `"><a href='${`bc://http/${btoa(unescape(encodeURIComponent(`AA/${downloadlink.match(/&fin=(.*?)&/)[1]}/?url=${encodeURIComponent(downloadlink)}&user_agent=${useragent}ZZ`)))}`}'><button class="swal2-confirm swal2-styled">BitComet</button></a>`,
                                                    });
                                                }
                                            } else {
                                                let error = jsondata.error;

                                                if (error === "" || error === undefined) {
                                                    error = "";
                                                }

                                                Swal.fire({
                                                    icon: "error",
                                                    title: "解析下载地址错误",
                                                    text: error,
                                                    confirmButtonText: "关闭",
                                                });
                                            }
                                        },
                                        onerror: () => {
                                            Swal.fire({
                                                icon: "error",
                                                title: "请求解析下载地址错误",
                                                confirmButtonText: "关闭",
                                            });
                                        },
                                    });
                                }
                            },
                            onerror: () => {
                                Swal.fire({
                                    icon: "error",
                                    title: "请求生成下载地址错误",
                                    confirmButtonText: "关闭",
                                });
                            },
                        });
                    }
                },
            });
        } else if (list.length > 1) {
            Swal.fire({
                icon: "error",
                title: "只可以一次解析一个文件",
                confirmButtonText: "关闭",
            });
        }
    });

    document.getElementById("KubeDownStatus").addEventListener("click", () => {
        Swal.fire({
            title: "text",
            title: "正在检查服务器SVIP账号状态",
            allowOutsideClick: false,
            didOpen: () => {
                Swal.showLoading();

                GM_xmlhttpRequest({
                    method: "GET",
                    url: "https://api.kubedown.com/status.php",
                    onload: (response) => {
                        const jsondata = JSON.parse(response.responseText);
                        if (jsondata.svipcookiestatus === true) {
                            Swal.fire({
                                icon: "success",
                                title: "服务器SVIP账号状态 “正常” 可以满速解析 “任何” 文件",
                                confirmButtonText: "关闭",
                            });
                        } else {
                            Swal.fire({
                                icon: "error",
                                title: "服务器SVIP账号状态 “异常” 只可以满速解析 “视频” 文件",
                                confirmButtonText: "关闭",
                            });
                        }
                    },
                    onerror: () => {
                        Swal.fire({
                            icon: "error",
                            title: "请求生成下载地址错误",
                            confirmButtonText: "关闭",
                        });
                    },
                });
            },
        });
    });
})();