在打开别人分享的百度网盘链接时,显示一个直达pan.naifei.cc的下载按钮,支持提取码链接,可配合自动填写提取码脚本使用
// ==UserScript==
// @name naifei+
// @namespace https://greasyfork.org/zh-CN/users/176664
// @version 20.08.15.13
// @description 在打开别人分享的百度网盘链接时,显示一个直达pan.naifei.cc的下载按钮,支持提取码链接,可配合自动填写提取码脚本使用
// @author cnhong
// @match *://pan.baidu.com/s/*
// @match *://pan.baidu.com/share/*
// @match *://yun.baidu.com/s/*
// @match *://pan.naifei.cc/*
// @grant none
// @run-at document-idle
// @modified 20.08.15.13 手动进入新版页面,不显示等待提示
// @modified 20.07.14.18 修复提取码bug
// @modified 20.07.11.19 优化提取码相关提示
// @modified 20.07.11.18 增加提取码暂存失败提示
// @modified 20.07.11.17 修复带提取码链接无法自动识别提取码的bug
// ==/UserScript==
(function() {
'use strict';
try{loadJq();}catch(e){log("error:", e);}
function main(){
log("开始初始化");
switch(document.domain){
case "pan.baidu.com":
baidu();
break;
case "pan.naifei.cc":
naifei();
break;
}
log("初始化完成");
}
function getShare(){
var h = location.href, s="";
if(h.indexOf('com/s/')>0){
s = h.split("com/s/")[1];
}else if(GET('surl')){
s = GET('surl');
}
if(s&& s.indexOf('#')>0){
s = s.split("#")[0];
}
return s;
}
function getPwd(share){
var pwd = '';
if(location.hash !="" && location.hash.length==5){
pwd = location.hash.replace("#","");
}else{
pwd = getCookie(share)||getCookie(share.substring(1));
}
if(pwd && pwd !=="****"){
log("发现提取码:"+pwd);
return pwd;
}
log("未发现提取码");
}
function GET(key) {
var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return decodeURI(r[2]);
return '';
}
function baidu(){
var pwdBtn = $('#submitBtn');
var share = getShare(), pwd;
if(!share){alert("解析shareId失败!可联系脚本作者");return false;}
pwd = getPwd(share);
if(pwdBtn.length>0){
if(pwd){
$('.pickpw input').val(pwd);
setCookie(share, pwd,30);
setTimeout(function(){
$("#submitBtn").trigger("click");
},1000);
}
$(".pickpw input").on("change",function(){
pwd = $('.pickpw input').val().trim();
setCookie(share, pwd,30);
});
return;
}
var url = share;
if(pwd){url += "&pwd="+pwd;}
if(url){
var btn = '<a class="g-button" data-button-id="b8" data-button-index="2" href="http://pan.naifei.cc/?share='+url+'" target="_blank" title="直达naifei"><span class="g-button-right"><em class="icon icon-save-disk" title="直达naifei"></em><span class="text" style="width: auto;">直达naifei</span></span></a>';
$(".x-button-box").prepend(btn);
$('a[data-button-id="b7"]').hide();
$('a[data-button-id="b5"]').hide();
}
}
function loadJq(){
if(typeof($)=="undefined"){
loadJS("https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js", main);
}else{
main();
}
}
function loadJS( url, callback ){
var script = document.createElement('script'),
fn = callback || function(){};
script.type = 'text/javascript';
script.onload = function(){
fn();
};
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
function loadCSS(url){
var script = document.createElement('link');
script.rel = 'stylesheet';
script.href = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
function setCookie(n,v,t)
{
var d = new Date();
d.setTime(d.getTime()+(t*24*60*60*1000));
t = "expires="+d.toGMTString();
document.cookie = n + "=" + v + "; " + t+"; path=/;";
}
function getCookie(n)
{
n = n + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
{
var c = ca[i].trim();
if (c.indexOf(n)==0) return c.substring(n.length,c.length);
}
return "";
}
function naifei(){
loadCSS('https://cdn.staticfile.org/weui/1.1.2/style/weui.min.css');
loadCSS('https://cdn.staticfile.org/jquery-weui/1.2.0/css/jquery-weui.min.css');
loadJS('https://cdn.staticfile.org/jquery-weui/1.2.0/js/jquery-weui.min.js',wait);
}
function wait(){
if(location.href.indexOf("/new")>0){
return ;
}
$.showLoading("解析中...");
var interval = setInterval(function(){
var flag = $("tr").length;
if(flag>=1){
$.hideLoading();
clearInterval(interval);
if(flag>1){
$.toast("解析成功");
return;
}else{
// if(GET("pwd")&&GET("pwd").length==4){
// $.toast("解析失败<br>建议刷新", "cancel");
// }else{
inputCode();
// }
}
}
}, 1000);
}
function inputCode(){
$.prompt({
text: "<section style='text-align:left;'>1.可能解析失败,点击“取消”自动刷新<br>2.可能需要输提取码,输入后点击”确定“</section>",
title: "解析内容为空!",
onOK: function(text) {
var url=location.href;
if(GET('pwd')){
url=url.replace(/&pwd=[0-9a-zA-Z]+/, "&pwd="+text);
}else{
url=url.replace("&pwd=","")+"&pwd="+text;
}
location.href=url;
},
onCancel: function() {
location.reload();
log("取消了");
$.showLoading("正在刷新");
},
input: GET("pwd")
});
}
function log(s){
console.group('[naifei+]');
console.log(s);
console.groupEnd();
}
})();