免掉百度网盘写密码的麻烦,包括解析短网址和跳转链接,多链接支持
目前為
// ==UserScript==
// @name Free Yun Keys
// @name:zh 免密百度网盘
// @namespace http://zszen.github.io/
// @version 5.0
// @description 免掉百度网盘写密码的麻烦,包括解析短网址和跳转链接,多链接支持
// @author Zszen John
// @include *
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.deleteValue
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @note 2020.07-26 v5.0 添加回对二次跳转的非百度云链接进行解析
// @note 2020.07-24 v4.0 支持自动下载,可按钮切换
// @note 2020.07-23 v3.0 修复错误, 去掉jquery
// @note 2020.07-21 v1.0 初步支持自动跳转,自动解析链接
// ==/UserScript==
(function() {
'use strict';
var label = 'Zszen '
var isAutoDownload = true;
var regexp_codeback = /#([a-zA-Z0-9]{4})/
var regexp_code = /(码|问)[\s|:|:]*([a-zA-Z0-9]{4})/
var regexp_url = /(https:\/\/pan.baidu.com\/.*?\/(\d|\w|-)+)/
var url = window.location.href;
var res = /\/\/(.+?\..*?)(\/|\?)/.exec(url);
var site = res[1];
if(site=="pan.baidu.com"){//parse
var pss = regexp_codeback.exec(url);
var inputs = ELs('input');
var as = ELs('a', el=>el.textContent.indexOf('提取文件')>=0);
if(pss!=null && pss.length>1 && inputs.length>0 && as.length>0){
console.log(label,'pan get');
inputs[0].value = pss[1];
as[0].click()
}else{
console.log(label,'pan download');
//<a class="g-button" data-button-id="b7" data-button-index="4" href="javascript:;" title="举报"><span class="g-button-right"><span class="text" style="width: auto;">举报</span></span></a>
//ELs('a',el=>{return el.title=='举报'}, el=>el.style.display = 'none');
var check_simbols = ['x','v']
ELs('a',el=>{return el.title.indexOf('保存到手机')>=0}, el=>{
var bl = GM_getValue("auto_download")
var a = document.createElement('a');
a.className = 'g-button autodownload'
a.href="javascript:;"
a.title="["+check_simbols[bl?1:0]+"]自动下载";
var span = document.createElement('span')
span.className = 'g-button-right'
a.appendChild(span)
var span2 = document.createElement('span')
span2.className = 'text'
span2.style.width = 'auto'
span.appendChild(span2);
span2.textContent = a.title
el.parentElement.insertBefore(a, el.nextElementSibling)
//
a.addEventListener('click',()=>{
var bl = GM_getValue("auto_download")
if(bl==null)bl=false;
bl = !bl;
GM_setValue("auto_download", bl)
a.title="["+check_simbols[bl?1:0]+"]自动下载";
span2.textContent = a.title
});
})
setTimeout(()=>{
var bl = GM_getValue("auto_download")
if(bl!=true){
return;
}
var ads = ELs('a', el=>{return el.title=='下载'});
if(ads.length>0){
var sels = ELs('span', el=>el.className == 'EOGexf');
for(var i=0; i<sels.length; i++){
sels[i].click();
}
ads[0].click();
}else{
ELs('a', el=>{return el.title.indexOf('下载')>=0})[0].click();
}
}, 1000);
}
}else{//deal
console.log(label,'pan find');
ELs('a',
(el)=>regexp_code.test(el.parentElement.textContent),
el=>{
console.log(el);
var ps = regexp_code.exec(el.parentElement.textContent)
if(regexp_url.test(el.href)){
el.href=el.href+'#'+ps[2]
}else{
GM_xmlhttpRequest({
method: "GET",
url: el.href,
onload: (res)=>{
//console.log(res.responseText);
var urls = regexp_url.exec(res.responseText);
if(urls && urls.length>1){
el.href=urls[1]+'#'+ps[2];
}
}
});
}
}
);
}
//
function ELs(tagName, conditionFun, dealFun, parent){
if(parent==null) parent = document;
var tags = [...parent.getElementsByTagName(tagName)];
if(conditionFun){
tags = tags.filter(conditionFun);
}
if(dealFun){
tags.forEach(dealFun);
}
return tags;
}
//DivMaker('<a class="aaa" href="123">asdfasdf <h1></a>', 'height:100px', 'a.aaa { color: green; }')
function DivMaker(innerHtml, styleString, cssString){
var divNode = document.createElement("div");
divNode.innerHTML = innerHtml;
document.body.appendChild(divNode);
if(styleString){
divNode.style = styleString;
}
if(cssString){
var style = document.createElement('style');
style.appendChild(document.createTextNode(cssString));
divNode.appendChild(style);
}
}
})();