激活网盘链接,同时自动填写密码,支持绝大多数Discuz论坛,zd423网站
当前为
// ==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
// ==/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"),
"<a target='_blank' class='btn btn-url' color:blue' href='"+linkList[i].url+'#'+linkList[i].password+"'>一键提取</a>");
}
//替换文档
$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);
});
}
// });
})();