// ==UserScript== // @name 磁力链接百度网盘补完 // @namespace http://tampermonkey.net/ // @version 1.84 // @description 磁力链接、百度网盘补完 // @author backrock12 // @include * // @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js // @exclude /(^[^:\/#\?]*:\/\/([^#\?\/]*\.)?www\.gamersky\.com(:[0-9]{1,5})?\/.*$)/ // @exclude /(^[^:\/#\?]*:\/\/([^#\?\/]*\.)?www\.baidu\.com(:[0-9]{1,5})?\/.*$)/ // @downloadURL none // ==/UserScript== (function () { 'use strict'; console.log("UrlLinePlugin"); var MagnetMk = true; var BaiduMk = true; var PixivMk = false; var BilibiliMk = false; //字符串格式化方法 String.prototype.UrlLineformat = function (args) { var result = this; if (arguments.length > 0) { if (arguments.length == 1 && typeof args == "object") { for (var key in args) { if (args[key] != undefined) { var reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] != undefined) { var reg = new RegExp("({)" + i + "(})", "g"); result = result.replace(reg, arguments[i]); } } } } return result; }; $.fn.replaceText = function (search, replace, action, text_only) { return this.each(function () { var node = this.firstChild, val, new_val,// Elements to be removed at the end. remove = []; if (node) { do { if (node.nodeType === 3) { val = node.nodeValue; if (val) { if (!action && replace) { new_val = val.replace(search, replace); } else { var t = search.exec(val) if (action && t && t.length > 0) new_val = action(node, val, t); else new_val = val; } if (new_val !== val) { if (!text_only && /{1}", bilibiliurl: "{1}", magneturl: "magnet:?xt=urn:btih:{1}", baiduurl1: "" + "https://pan.baidu.com/s/1{1}", baiduurl2: "{2}", baiduurl3: "{1}", baiduPattern0: /((https?:\/\/)?pan\.baidu\.com\/s\/1([a-zA-Z0-9_\-]{5,22})|(https?:\/\/)?pan\.baidu\.com\/share\/init\?surl=([a-zA-Z0-9_\-]{5,22})|[^a-zA-Z]s\/1([a-zA-Z0-9_\-]{5,22})|\bs\/1([a-zA-Z0-9_\-]{5,22}))/, baiduPattern: /(https?:\/\/)?pan\.baidu\.com\/s\/1([a-zA-Z0-9_\-]{5,22})/, baiduPattern2: /(https?:\/\/)?pan\.baidu\.com\/share\/init\?surl=([a-zA-Z0-9_\-]{5,22})/, baiduPattern3: /\/?s\/1([a-zA-Z0-9_\-]{5,22})/, common_reg: /\s*(提取密碼|提取密码|提取码|提取碼|提取|密碼|密码|百度|百度云|云盘|yun|通关口令|本帖隐藏的内容)[::]?\s*(<[^>]+>)?\s*([0-9a-zA-Z]{4,})\s*/, common_r: "\\s*({0})[::]?\\s*(<[^>]+>)?\\s*([0-9a-zA-Z]{4,})\\s*", Pwnum: 5 }; function UrlLinePlugin(options) { this.settings = $.extend({}, defaults, options); this._defaults = defaults; this.init(); } UrlLinePlugin.prototype = { init: function () { //obj = this; }, Star: function () { var e = this; console.log("star"); if (/tieba\.baidu\.com/.test(location.href)) { setTimeout(function () { console.log("tieba"); e.StarReplace.call(e); }, 2000); }else{ e.StarReplace.call(e); } }, StarReplace: function () { var obj = this; if (PixivMk) obj.PixivReplace(obj); if (BilibiliMk) obj.BilibiliReplace(obj); if (MagnetMk) obj.MagnetReplace(obj); if (BaiduMk) obj.BaiduReplace(obj); }, PixivReplace: function (obj) { try { obj._subPixivReplace(obj); } catch (err) { console.log("Pixiv replace Error:" + err.message); } }, BilibiliReplace: function (obj) { try { obj._subBilibiliReplace(obj); } catch (err) { console.log("Bilibili replace Error:" + err.message); } }, MagnetReplace: function (obj) { try { obj._subMagnetReplace(obj); } catch (err) { console.log("Magnet replace Error:" + err.message); } }, BaiduReplace: function (obj) { try { if (/pan\.baidu\.com/.test(location.href)) { console.log("baiduPassword"); // $(".file-name").css('white-space','inherit'); $("[class*='global-icon-16']").css('float','left'); //填寫密碼 if (location.hash && location.hash.length == 5) { var pwinput = $(".QKKaIE"); if (!pwinput) pwinput = $(":contains('请输入提取码'):last").nextAll("input"); if (!pwinput) pwinput = $(":contains('请输入提取码'):last").next().find("input"); pwinput.val(location.hash.slice(1, 5)); setTimeout(function () { var pwbtn = $("a:contains('提取文件')"); pwbtn.click(); }, 50); } } else { obj._subBaiduReplace(obj); } } catch (err) { console.log("baidu replace Error:" + err.message); } }, _subPixivReplace: function (obj) { function pixivReplacer(match, p1, p2, p3) { return obj.settings.pixivurl.UrlLineformat(p3, match); } $("*").not("script").replaceText(obj.settings.pixivPattern, pixivReplacer); console.log(location.href + "is pixiv replace"); }, _subBilibiliReplace: function (obj) { function bilibiliReplacer(match, p1, p2, p3) { return obj.settings.bilibiliurl.UrlLineformat(p3, match); } $("*").not("script").replaceText(obj.settings.bilibiliPattern, bilibiliReplacer); console.log(location.href + "is bilibili replace"); }, _subMagnetReplace: function (obj) { $("*").replaceText(obj.settings.hcagPattern, ""); $("*").replaceText(obj.settings.magnetPattern2, ""); function magnetReplacer(match, p1, p2, p3, p4) { var value = match.replace("magnet:?", "").replace("xt=", "").replace("urn:btih:", ""); return obj.settings.magneturl.UrlLineformat(value, match); } $("*").not("script").replaceText(obj.settings.magnetPattern, magnetReplacer); console.log(location.href + "is magnet replace"); }, _subBaiduReplace: function (obj) { function fetchPid(e) { let t2 = obj.settings.baiduPattern0.exec(e); var v = t2[3] ? t2[3] : (t2[5] ? t2[5] : (t2[6] ? t2[6] : t2[7])); return v; } function GetDownUrl(value, Pid, pw) { if (!pw) { return obj.settings.baiduurl1.UrlLineformat(Pid, Pid); } else { return obj.settings.baiduurl2.UrlLineformat(Pid, pw, pw); } } function Geturl(Pid, match) { return obj.settings.baiduurl3.UrlLineformat(Pid, match); } function baiducheck(text) { return obj.settings.baiduPattern0.test(text) } function GetPw(text) { let p; var pw = (p = obj.settings.common_reg.exec(text)) && 4 === p.length ? p[3] : null; return pw; } function Getnextnode(node) { var loopnum = obj.settings.Pwnum; var bnode = node.nextSibling; if (!bnode) bnode = node.parentNode.nextSibling; while (node && !bnode && loopnum >= 0) { bnode = node.nextSibling; node = node.parentNode; loopnum--; } return bnode; } function FindNextPw(node, Pid) { var loopnum = obj.settings.Pwnum; var bnode = Getnextnode(node); if (bnode) { do { var bh = bnode.nodeValue ? bnode.nodeValue : bnode.outerHTML; var bt = bnode.nodeValue ? bnode.nodeValue : bnode.innerText; if (bnode && bt) { if (baiducheck(bt)) break; var pw = GetPw(bt); if (pw != null) { var retext = GetDownUrl(pw, Pid, pw); var h = bh.replace(pw, retext); $(bnode).replaceWith(h); //$(bnode).remove(); break; } } bnode = !bnode.nextSibling ? Getnextnode(bnode) : bnode.nextSibling; if (!bnode) break; loopnum--; } while (loopnum >= 0); } } function ReplaceorPw(node, e, n) { var Pid = fetchPid(n[0]); if (!Pid) return e; var retext = GetDownUrl(n[0], Pid); var v = e.replace(n[0], retext); var pw = GetPw(e); var ischeck = false; if (!pw) { var s = e.substring(e.indexOf(Pid) + Pid.length); if (baiducheck(s)) { ischeck = true; } else { let ss; pw = (ss = /[::]?\s*(<[^>]+>)?\s*([0-9a-zA-Z]{4,8})/.exec(s)) && 3 === ss.length ? ss[2] : null; } } if (pw) { var retext2 = GetDownUrl(pw, Pid, pw); v = v.replace(pw, retext2); } else { FindNextPw(node, Pid); } if (ischeck) { v = ReplaceorPw(node, v, [s]); } return v; } function baiduReplacer(match, p1, p2, p3) { var Pid = fetchPid(match); return Geturl(Pid, match); } $("*").not("script").not("a").replaceText(obj.settings.baiduPattern0, baiduReplacer, ReplaceorPw); $("a[urlline!='true']").each(function () { var h = $(this).attr("href"); if (baiducheck(h)) { var Pid = fetchPid(h); FindNextPw(this, Pid); } else { if (/\.bdimg.com/.test(h)) { var t = $(this).text() if (baiducheck(t)) { var tPid = fetchPid(t); FindNextPw(this, tPid); } } } }); console.log(location.href + "is baidu replace"); } }; var e = new UrlLinePlugin(); e.Star(); }) ();