Greasy Fork

Greasy Fork is available in English.

百度网盘批量离线

批量离线辅助脚本

目前为 2017-01-08 提交的版本,查看 最新版本

// ==UserScript==
// @name         百度网盘批量离线
// @namespace    http://greasyfork.icu/users/63665
// @homepage     http://greasyfork.icu/zh-CN/scripts/23426
// @version      0.9
// @description  批量离线辅助脚本
// @author       fenghengzhi
// @match        http://pan.baidu.com/disk/home*
// @match        http://yun.baidu.com/disk/home*
// @match        https://pan.baidu.com/disk/home*
// @match        https://yun.baidu.com/disk/home*
// @grant        none
// @run-at      document-end
// @require     https://code.jquery.com/jquery-3.1.0.min.js
// @note        v0.2 好用多了,就是有点难看 v0.5简单美化 v0.9大幅更新界面
// ==/UserScript==
(function() {

    var urls;
    var i;
    function alertWin(title, msg, w, h) {
        //背景层
        var bgObj = $("<div/>").appendTo('body');
        bgObj.css({
            "position":"absolute",
            "left":"0px",
            "top":"0px",
            "width":"100%",
            "height":"100%",
            "opacity":"0.3",
            "background-color":"#000000",
            "z-index":"1000"
        });

        //创建一个弹出层
        msgObj=$("#offlinelist-dialog").clone().appendTo('body');
        msgObj.attr('id','mul-dialog');
        msgObj.css('z-index','1001');


        msgObj.find('.dialog-drag').mousedown(function (e) {
            var left, top, $this;
            left = e.clientX; top = e.clientY; $this = $(this);
            if(this.setCapture) {
                this.setCapture();
                this.onmousemove = function (ev) { mouseMove(ev || event); };
                this.onmouseup = mouseUp;
            }
            else{
                $(document).bind("mousemove", mouseMove).bind("mouseup", mouseUp);
            }
            function mouseMove(e) {
                var target = msgObj;
                var l = e.clientX - left + Number(target.css('margin-left').replace(/px$/, '')) || 0;
                var t = e.clientY - top + Number(target.css('margin-top').replace(/px$/, '')) || 0;
                //l = Math.min(l, $(window).width() - target.width() - target.position().left);
                //t = Math.min(t, $(window).height() - target.height() - target.position().top);
                left = e.clientX;
                top = e.clientY;
                target.css({ 'margin-left': l, 'margin-top': t });
            }
            function mouseUp(e) {
                var el = $this.get(0);
                if(el.releaseCapture) {
                    el.releaseCapture();
                    el.onmousemove = el.onmouseup = null;
                }
                else{
                    $(document).unbind("mousemove", mouseMove).unbind("mouseup", mouseUp);
                }
            }
        });
        msgObj.find('.dialog-control').click(function() {
            bgObj.remove();
            msgObj.remove();
        });
        msgObj.find('.select-text').text(title);
        msgObj.css('width',w);
        dialogbody=msgObj.find('.dialog-body');
        dialogbody.children().remove();
        mullineinputbox=$("<textarea/>").attr("id","multi_urls").appendTo(dialogbody);
        mullineinputbox.css('width','95%').css('height','100px').css('border-radius','4px').css('border','1px solid rgb(196,196,196)');
        $('head').append("<style>textarea:focus{border:1px solid rgb(192, 217, 255);}</style>");
        dialogbody.css('text-align','center');
        button1=$('<button/>');
        button1.css({
            'width':'104px',
            'height':'34px',
            'border-radius':'4px',
            'border-style':'none',
            'font':"normal normal normal normal 13px / 32px 'Microsoft YaHei': SimSun",
            'outline':'none',
            'cursor':'pointer'
        });
        button2=button1.clone();
        button1.css('background-color',"rgb(59, 140, 255)").css('color','rgb(255,255,255)').text('确定');
        button2.css('border','1px solid rgb(192, 217, 255)').css('background-color',"rgb(255,255,255)").css('color','rgb(59, 140, 255)').text('关闭');
        $('head').append("<style>button:hover{opacity:0.7;}</style>");

        mullineinputbox.after(button1);
        button1.after(button2);
        mullineinputbox.before('<br>').after('<br>').after('<br>');
        button1.after(' ');
        button2.after('<br>');
        button2.after('<br>');
        button1.click(function(){
            urls=$("#multi_urls").val().split("\n");
            button2.click();
            Multi_offline();
            console.debug(urls);
        });
        button2.click(function() {
            bgObj.remove();
            msgObj.remove();
        });

    }
    function add_multi_button(){
        if($("#offlinelist-dialog").css("display")!="block") return setTimeout(arguments.callee,100);
        //$("#offlinelist-dialog").find(".dialog-control").children().click();//点击关闭按钮
        if($("#offlinelist-dialog").find("span:contains('批量离线')[class='text']").length===0){
            $("#offlinelist-dialog").css('width','720px');
            var old_button=$("#_disk_id_2");
            var new_button=old_button.clone();
            new_button.find(".text").text("批量离线");
            new_button.attr('id','multi_download');
            new_button.click(function(){
                alertWin("输入链接","",500,500);
            });
            old_button.after(new_button);
        }
    }

    //'use strict'
    $(document).one("click","span:contains('离线下载')[class='text']",add_multi_button);




    window.Multi_offline=function(urls){
        $('#_disk_id_2').click();
        i=0;
        offline_download();
    };
    function offline_download(){
        $("#_disk_id_2").click();//点击新建按钮
        wait_newoffline_dialog();
    }
    function wait_newoffline_dialog(){//等待新建窗口
        if($("#newoffline-dialog").css("display")!="block") return setTimeout(arguments.callee,1000);
        $("#share-offline-link").val(urls[i]);
        $("#newoffline-dialog").find("span:contains('确定')[class='text']").click();//确定按钮
        check_code();
    }

    function check_code(){
        if($("#offlinelist-dialog").css("display")!="block" && $("#dialog1").css("display")!="block") return setTimeout(arguments.callee,100);
        if($("#dialog1").css("display")=="block"){//弹出验证码
            wait_checkcode_input();
        }
        else  wait_complete();//没有弹出验证码
    }
    function wait_checkcode_input(){
        $("#dialog1").find(".input-code").focus();
        if($("#dialog1").find(".input-code").val().length!=4) return setTimeout(arguments.callee,100);
        $("#dialog1").find("span:contains('确定')[class='text']").click();
        check_code();
    }
    function wait_complete(){
        if($("#offlinelist-dialog").css("display")!="block") return setTimeout(arguments.callee,1000);
        i++;
        if(i>=urls.length) return;//批量下载完成,脚本结束
        else offline_download();
    }
})();