// ==UserScript== // @name 网盘自动提取 // @namespace http://xhunter.vicp.io // @description 激活网盘链接,同时自动填写密码,支持绝大多数Discuz论坛,zd423网站 // @include http://www.52pojie.cn/forum* // @include http://www.52pojie.cn/thread* // @include *://pan.baidu.com/share/init?shareid=* // @include http*://bbs.zhiyoo.com/forum.php* // @include http://www.right.com.cn/forum/* // @include http://www.zdfans.com/* // @version 1.0 // @author hunter // @require http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js // @downloadURL none // ==/UserScript== (function() { /** * 激活链接 * @param $dom 要遍历链接的dom区域 * @param linkList link对象数组 */ function activiteLink($dom, linkList) { // 上文已经找到所有带密码的链接和相对应的密码 var docu = $dom.html(); //激活链接文本 for (var i = 0; i < linkList.length; i++) { // 全部替换 docu = docu.replace(new RegExp(linkList[i].url,"g"), "一键提取"); } //替换文档 $dom.html(docu); } /** * 链接对象 * @param link * @param password * @constructor */ function Link() { this.url = null; this.password = null; //增加链接 this.addLink = function (link,password) { this.url = link; this.password = password; }; } //-----------------------------------------------------------------------------------------------------脚本入口------------------------------------------------------------------------------------------------------------------- //$(function(){ //链接数组 var linkList = new Array(); //百度网盘链接匹配规则 var urlExp = /((?:https?:\/\/)?(?:yun|pan|eyun).baidu.com\/(?:s\/\w*|share\/\S*\d))/g; var isInSharePage = location.href.match(urlExp); if (isInSharePage) { // 获取密码 isInSharePage = location.href; var password = isInSharePage.match(new RegExp("(\\w{4})$", "gm")); $("#accessCode").val(password); //按下提取文件按钮 $(".g-button-right :contains('提取文件')").click(); } else { var $docHTML = $("body").html(); var $docText = $("body").text(); var $script = $("script"); //链接正则规则 var regRuleLink = "((?:https?:\\/\\/)?(?:yun|pan|eyun).baidu.com\\/(?:s\\/\\w*|share\\/\\S*\\d))"; // var regRuleLink = urlExp; //链接和密码的间隔规则 var regSplit = "\\s*(密|密码|提取码|访问码|提取密码)(\\s|\\:|:)*"; //密码规则 var regRulePwd = "\\w{4}"; //总规则 var regRuleTotal = regRuleLink+regSplit+regRulePwd; //总规则转为regExp对象 var regExp = new RegExp(regRuleTotal, "gm"); //分享条文数组 var shareArray = $docText.match(regExp); var urlArray = new Array(); //分享链接的匹配规则 var urlExp = new RegExp(regRuleLink, "gm"); //密码+分隔符匹配规则 var pswExp = new RegExp(regSplit+regRulePwd, "gm"); //密码数组 4位数 var pswArr = new Array(); if (shareArray!=null){ //找出所有链接,封装成数组 for (var i = 0; i < shareArray.length; i++) { //当不存在此链接时才添加 if (urlArray.indexOf(shareArray[i].match(urlExp)[0])==-1){ urlArray.push(shareArray[i].match(urlExp)[0]); pswArr.push(shareArray[i].match(pswExp)[0]); var link = new Link(); link.url = shareArray[i].match(urlExp)[0]; //包含分隔符的密码 link.password = shareArray[i].match(pswExp)[0]; linkList.push(link); } } } //把密码精简成????四个字母格式,可用密码数组 var pswArray = new Array(); for (var i = 0; i < linkList.length; i++) { var link = linkList[i]; link.password = link.password.match(new RegExp(regRulePwd,"gm"))[0]; } //-------------------------------------------------------------------------------遍历所有class为t_f 的dom,完成替换链接工作( 把要添加的网站补充到这里 )------------------------------------------------------------------------------- //discuz论论坛 $(".t_f").each(function () { activiteLink($(this),linkList); }); //zd423文件 $(".content").each(function () { activiteLink($(this),linkList); }); } // }); })();