您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
批量离线辅助脚本
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/37905/264273/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E6%89%B9%E9%87%8F%E7%A6%BB%E7%BA%BF.js
// ==UserScript== // @name 百度网盘批量离线 // @namespace https://greasyfork.org/users/63665 // @homepage https://greasyfork.org/zh-CN/scripts/37905 // @version 1.8.1 // @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://unpkg.com/babel-standalone/babel.min.js // @require https://unpkg.com/babel-polyfill/dist/polyfill.min.js // @require https://unpkg.com/jquery/dist/jquery.min.js // @note v1.6改用unpkg的库,可自动使用最新版本 // ==/UserScript== /* jshint esnext: true */ /* jshint esversion: 6 */ // Your code here... let urls = []; let i; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function alertWin(title, msg, w, h) { //背景层 let bgObj = $(`<div style="position:absolute;left:0;top:0;width:100%;height:100%;opacity:0.3;background-color:#000;z-index:1000;"></div>`).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 = $('<table style="width:100%;"></table>').appendTo(dialogbody); let tr1 = $('<tr></tr>').appendTo(table1); let td1 = $('<td colspan="2" style="width:100%;padding:10px;"></td>').appendTo(tr1); let mullineinputbox = $('<textarea id="multi_urls" style="width:100%;height:100px;border-radius:4px;border:1px solid rgb(196,196,196)"></textarea>;').appendTo(td1); $('head').append("<style>textarea:focus{border:1px solid rgb(192, 217, 255);}</style>"); dialogbody.css('text-align', 'center'); tr1 = $('<tr></tr>').insertAfter(tr1); td1 = $('<td style="padding-bottom:15px;"></td>').appendTo(tr1); let td2 = $('<td style="padding-bottom:15px;"></td>').insertAfter(td1); let button1 = $(`<button class="mul-button" style="width:104px;height:34px;border-radius:4px;border:none;outline:none;cursor:pointer;font:normal normal normal normal 13px / 32px 'Microsoft YaHei': SimSun;"></button>`); 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("<style>button.mul-button:hover{opacity:0.7;}</style>"); 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 }); } var add_multi_button = async function() { 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() { $("span.text:contains(新建链接任务)").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条件为假,则批量下载完成,脚本结束 }