// ==UserScript== // @name 百度网盘批量离线 // @namespace https://greasyfork.org/users/63665 // @homepage https://greasyfork.org/zh-CN/scripts/23426 // @version 1.4 // @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://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js // @note v1.3使用es7改进代码,优化代码阅读逻辑 v1.2小幅优化 // @downloadURL none // ==/UserScript== /* jshint ignore:start */ var inline_src = (<> setTimeout(resolve, ms)); } function alertWin(title, msg, w, h) { //背景层 let bgObj = $(`
`).appendTo('body'); //创建一个弹出层 let msgObj = $("#offlinelist-dialog").clone().appendTo('body'); msgObj.attr('id', 'mul-dialog'); msgObj.css('z-index', '1001'); msgObj.find('.dialog-drag').mousedown(function (e) { let 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).on("mousemove", mouseMove).on("mouseup", mouseUp); } function mouseMove(e) { let target = msgObj; let l = e.clientX - left + Number(target.css('margin-left').replace(/px$/, '')) || 0; let 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) { let 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(); }); let dialogbody = msgObj.find('.dialog-body'); dialogbody.children().remove(); let table1 = $('
').appendTo(dialogbody); let tr1 = $('').appendTo(table1); let td1 = $('').appendTo(tr1); let mullineinputbox = $(';').appendTo(td1); $('head').append(""); dialogbody.css('text-align', 'center'); tr1 = $('').insertAfter(tr1); td1 = $('').appendTo(tr1); let td2 = $('').insertAfter(td1); let button1 = $(``); let 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(""); td1.append(button1); td2.append(button2); button1.click(function () { urls = $("#multi_urls").val().replace(/\r\n/g,'\n').replace(/\r/g,'\n').split("\n"); button2.click(); Multi_offline_start(); console.debug(urls); }); button2.click(function () { bgObj.remove(); msgObj.remove(); }); msgObj.find('.select-text').text(title); msgObj.css('width', w); msgObj.css({ 'left': bgObj.width() / 2 - msgObj.width() / 2, 'top': bgObj.height() / 2 - msgObj.height() / 2 }); } async function add_multi_button() { while ($("#offlinelist-dialog").is(":visible") === false) await sleep(100); //$("#offlinelist-dialog").find(".dialog-control").children().click();//点击关闭按钮 if ($('#offlinelist-dialog span.text:contains(批量离线)').length === 0) { $('#offlinelist-dialog').css('width', '720px'); let old_button = $("#_disk_id_2"); let 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); } } $('body').one('click', 'a.g-button:contains(离线下载)', add_multi_button); function Multi_offline_start() { //$("#_disk_id_2").click(); i = 0;//清空计数器 offline_download();//进入循环 } async function offline_download() { $("#_disk_id_2").click();//点击新建按钮 //等待新建窗口 while ($("#newoffline-dialog").is(":visible") === false) await sleep(100); $('#share-offline-link').val(urls[i]);//输入一条url $('#newoffline-dialog').find('span.text:contains(确定)').click();//点击确定按钮 check_code(); } async function check_code() { //上一步1.刚添加完一条url 2.刚输完一次验证码 //下一步1.要求输验证码或直接通过 2.输错要重输,输对就通过 while ($("#offlinelist-dialog").is(":visible") === false && $("#dialog1").is(":visible") === false) await sleep(100); if ($("#dialog1").is(":visible")) {//弹出验证码 wait_checkcode_input(); } else if ($("#offlinelist-dialog").is(":visible")) wait_complete();//没有弹出验证码 else alert('error'); } function wait_checkcode_input() { $("#dialog1 .input-code").focus(); $("#dialog1 .input-code").on('input', function () { if (this.value.length === 4) { $('#dialog1').find('span.text:contains(确定)').click(); check_code(); } }); } async function wait_complete() { while ($('#offlinelist-dialog').is(':visible') === false) await sleep(100); ++i; if (i < urls.length) offline_download();//继续批量下载 //if条件为假,则批量下载完成,脚本结束 } /* jshint ignore:start */ ]]>).toString(); let c = Babel.transform(inline_src, { presets: ['es2015', 'es2016', 'es2017'] }); console.log(c); eval(c.code); /* jshint ignore:end */