naifei+

在打开别人分享的百度网盘链接时,显示一个直达pan.naifei.cc的下载按钮,支持提取码链接,可配合自动填写提取码脚本使用

  1. // ==UserScript==
  2. // @name naifei+
  3. // @namespace https://greasyfork.org/zh-CN/users/176664
  4. // @version 20.08.15.13
  5. // @description 在打开别人分享的百度网盘链接时,显示一个直达pan.naifei.cc的下载按钮,支持提取码链接,可配合自动填写提取码脚本使用
  6. // @author cnhong
  7. // @match *://pan.baidu.com/s/*
  8. // @match *://pan.baidu.com/share/*
  9. // @match *://yun.baidu.com/s/*
  10. // @match *://pan.naifei.cc/*
  11. // @grant none
  12. // @run-at document-idle
  13. // @modified 20.08.15.13 手动进入新版页面,不显示等待提示
  14. // @modified 20.07.14.18 修复提取码bug
  15. // @modified 20.07.11.19 优化提取码相关提示
  16. // @modified 20.07.11.18 增加提取码暂存失败提示
  17. // @modified 20.07.11.17 修复带提取码链接无法自动识别提取码的bug
  18. // ==/UserScript==
  19.  
  20. (function() {
  21. 'use strict';
  22. try{loadJq();}catch(e){log("error:", e);}
  23. function main(){
  24. log("开始初始化");
  25. switch(document.domain){
  26. case "pan.baidu.com":
  27. baidu();
  28. break;
  29. case "pan.naifei.cc":
  30. naifei();
  31. break;
  32. }
  33. log("初始化完成");
  34. }
  35. function getShare(){
  36. var h = location.href, s="";
  37. if(h.indexOf('com/s/')>0){
  38. s = h.split("com/s/")[1];
  39. }else if(GET('surl')){
  40. s = GET('surl');
  41. }
  42. if(s&& s.indexOf('#')>0){
  43. s = s.split("#")[0];
  44. }
  45. return s;
  46. }
  47. function getPwd(share){
  48. var pwd = '';
  49. if(location.hash !="" && location.hash.length==5){
  50. pwd = location.hash.replace("#","");
  51. }else{
  52. pwd = getCookie(share)||getCookie(share.substring(1));
  53. }
  54. if(pwd && pwd !=="****"){
  55. log("发现提取码:"+pwd);
  56. return pwd;
  57. }
  58. log("未发现提取码");
  59. }
  60. function GET(key) {
  61. var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)", "i");
  62. var r = window.location.search.substr(1).match(reg);
  63. if (r != null)
  64. return decodeURI(r[2]);
  65. return '';
  66. }
  67. function baidu(){
  68. var pwdBtn = $('#submitBtn');
  69. var share = getShare(), pwd;
  70. if(!share){alert("解析shareId失败!可联系脚本作者");return false;}
  71. pwd = getPwd(share);
  72. if(pwdBtn.length>0){
  73. if(pwd){
  74. $('.pickpw input').val(pwd);
  75. setCookie(share, pwd,30);
  76. setTimeout(function(){
  77. $("#submitBtn").trigger("click");
  78. },1000);
  79. }
  80. $(".pickpw input").on("change",function(){
  81. pwd = $('.pickpw input').val().trim();
  82. setCookie(share, pwd,30);
  83. });
  84. return;
  85. }
  86. var url = share;
  87. if(pwd){url += "&pwd="+pwd;}
  88. if(url){
  89. 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>';
  90. $(".x-button-box").prepend(btn);
  91. $('a[data-button-id="b7"]').hide();
  92. $('a[data-button-id="b5"]').hide();
  93. }
  94. }
  95. function loadJq(){
  96. if(typeof($)=="undefined"){
  97. loadJS("https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js", main);
  98. }else{
  99. main();
  100. }
  101. }
  102. function loadJS( url, callback ){
  103. var script = document.createElement('script'),
  104. fn = callback || function(){};
  105. script.type = 'text/javascript';
  106. script.onload = function(){
  107. fn();
  108. };
  109. script.src = url;
  110. document.getElementsByTagName('head')[0].appendChild(script);
  111. }
  112. function loadCSS(url){
  113. var script = document.createElement('link');
  114. script.rel = 'stylesheet';
  115. script.href = url;
  116. document.getElementsByTagName('head')[0].appendChild(script);
  117. }
  118. function setCookie(n,v,t)
  119. {
  120. var d = new Date();
  121. d.setTime(d.getTime()+(t*24*60*60*1000));
  122. t = "expires="+d.toGMTString();
  123. document.cookie = n + "=" + v + "; " + t+"; path=/;";
  124. }
  125. function getCookie(n)
  126. {
  127. n = n + "=";
  128. var ca = document.cookie.split(';');
  129. for(var i=0; i<ca.length; i++)
  130. {
  131. var c = ca[i].trim();
  132. if (c.indexOf(n)==0) return c.substring(n.length,c.length);
  133. }
  134. return "";
  135. }
  136. function naifei(){
  137. loadCSS('https://cdn.staticfile.org/weui/1.1.2/style/weui.min.css');
  138. loadCSS('https://cdn.staticfile.org/jquery-weui/1.2.0/css/jquery-weui.min.css');
  139. loadJS('https://cdn.staticfile.org/jquery-weui/1.2.0/js/jquery-weui.min.js',wait);
  140. }
  141. function wait(){
  142. if(location.href.indexOf("/new")>0){
  143. return ;
  144. }
  145. $.showLoading("解析中...");
  146. var interval = setInterval(function(){
  147. var flag = $("tr").length;
  148. if(flag>=1){
  149. $.hideLoading();
  150. clearInterval(interval);
  151. if(flag>1){
  152. $.toast("解析成功");
  153. return;
  154. }else{
  155. // if(GET("pwd")&&GET("pwd").length==4){
  156. // $.toast("解析失败<br>建议刷新", "cancel");
  157. // }else{
  158. inputCode();
  159. // }
  160. }
  161. }
  162. }, 1000);
  163. }
  164. function inputCode(){
  165. $.prompt({
  166. text: "<section style='text-align:left;'>1.可能解析失败,点击“取消”自动刷新<br>2.可能需要输提取码,输入后点击”确定“</section>",
  167. title: "解析内容为空!",
  168. onOK: function(text) {
  169. var url=location.href;
  170. if(GET('pwd')){
  171. url=url.replace(/&pwd=[0-9a-zA-Z]+/, "&pwd="+text);
  172. }else{
  173. url=url.replace("&pwd=","")+"&pwd="+text;
  174. }
  175. location.href=url;
  176. },
  177. onCancel: function() {
  178. location.reload();
  179. log("取消了");
  180. $.showLoading("正在刷新");
  181. },
  182. input: GET("pwd")
  183. });
  184. }
  185. function log(s){
  186. console.group('[naifei+]');
  187. console.log(s);
  188. console.groupEnd();
  189. }
  190. })();