Greasy Fork

网盘自动提取

激活网盘链接,同时自动填写密码,支持绝大多数Discuz论坛,zd423网站

当前为 2017-06-24 提交的版本,查看 最新版本

// ==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);
        });
    }
    // });
})();