百度文库文档免费下载

可下载百度文库需要下载券的文档,不能下载VIP文档及付费文档,支持复制文库内的内容并包含格式转换功能,安装会替换原有的置顶功能(注:下载调用第三方网站数据,该网站首次下载需加群);

  1. // ==UserScript==
  2. // @name 百度文库文档免费下载
  3. // @namespace wenkufreedown
  4. // @version 0.0.3
  5. // @description 可下载百度文库需要下载券的文档,不能下载VIP文档及付费文档,支持复制文库内的内容并包含格式转换功能,安装会替换原有的置顶功能(注:下载调用第三方网站数据,该网站首次下载需加群);
  6. // @author wenkufreedown
  7. // @include *://wenku.baidu.com/*
  8. // @include *://wk.baidu.com/*
  9. /************************************/
  10. // @connect at.alicdn.com
  11. // @grant GM_xmlhttpRequest
  12. // @grant GM_getResourceURL
  13. // @grant GM_getValue
  14. // @grant GM_setValue
  15. // @grant GM_download
  16. // @resource woff2 http://at.alicdn.com/t/font_1319887_t5z5anzuox.woff2
  17. // @resource woff http://at.alicdn.com/t/font_1319887_t5z5anzuox.woff
  18. // @resource ttf http://at.alicdn.com/t/font_1319887_t5z5anzuox.ttf
  19. // @resource svg http://at.alicdn.com/t/font_1319887_t5z5anzuox.svg#iconfont
  20. // @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js
  21. // @run-at document-end
  22. // @compatible Chrome
  23. // @compatible Firefox
  24. // @compatible Edge
  25. // @compatible Safari
  26. // @compatible Opera
  27. // @compatible UC
  28. // ==/UserScript==
  29.  
  30. (function() {
  31. 'use strict';
  32. var $ = $ || window.$;
  33. var window_url = window.location.href;
  34.  
  35. if(window_url.indexOf("wenku.baidu.com/view") == -1&&window_url.indexOf("wk.baidu.com/view") == -1||window.top != window.self){
  36. return;
  37. }
  38.  
  39. var rightBox = addHtml();
  40.  
  41. if(GM_getValue('isClose').state!="1"){
  42. $("body").append(rightBox);
  43. }
  44.  
  45. //恢复下载功能按钮
  46. var t=0, num=0;
  47. $("body").click(function(){
  48. if( num == 0 ){
  49. t = new Date().getTime();
  50. num+=1;
  51. }else if(num == 1||num == 2){
  52. num+=1;
  53. }else if(num == 3){
  54. var tt = new Date().getTime();
  55. if( tt-t<=1000 ){
  56. $("body").append(rightBox);
  57. GM_setValue("isClose",{"state":"2"});
  58. }else{
  59. num = 0;
  60. }
  61. }
  62. });
  63.  
  64. //隐藏显示功能按钮
  65. $(window).scroll(function(){
  66. if($("#activity-tg").css("display")=="block"||$("#activity-tg").css("display")=="null"){
  67. $("#activity-tg").remove();
  68. }
  69.  
  70. if($(this).scrollTop() > 350){
  71. $('.func').fadeIn();
  72. }else{
  73. $('.func').fadeOut();
  74. }
  75. });
  76.  
  77. //返回顶部
  78. $("body").on("click","#top-back",function(){
  79. $('body,html').animate({scrollTop:0},300);
  80. });
  81.  
  82. //关闭rightbox
  83. $("#closeEx").on("click",function(){
  84. alert("关闭此菜单后,如果以后想要恢复可以鼠标连点此页面任意位置4次恢复");
  85. $("#activity-tg").show();
  86. GM_setValue("isClose",{"state":"1"});
  87. $(".cndns-right").remove();
  88. });
  89.  
  90. //打开下载网址
  91. var downPageUrl = "http://121.40.71.144/api/jump.php?url=@";
  92. $("body").on("click","#dow",function(){
  93. var downPageUrl_reg = downPageUrl.replace(/@/g, encodeURIComponent(window.location.href));
  94. window.open(downPageUrl_reg, "_blank");
  95. });
  96.  
  97. //打开转换网址
  98. $("body").on("click","#con",function(){
  99. window.open("https://zhuanhuan.supfree.net/", "_blank");
  100. });
  101.  
  102. //打开复制页面
  103. $("body").on("click","#cop",function(){
  104. copyContent_all();
  105. });
  106.  
  107. function addHtml(){
  108. //添加css
  109. var $style = $('<style type="text/css"></style>');
  110. $($('head')[0]).append($style);
  111. $style.append(
  112. "p{margin:0px;padding:0px;line-height:20px;}"+
  113. "a{border:0;text-decoration:none;}"+
  114. "a:hover{color:#ff5a00;text-decoration:none;}"+
  115.  
  116. "@font-face {"+
  117. "font-family: 'iconfont';"+
  118. "src: url('//at.alicdn.com/t/font_1319887_t5z5anzuox.eot');"+
  119. "src: url('//at.alicdn.com/t/font_1319887_t5z5anzuox.eot?#iefix') format('embedded-opentype'),"+
  120. "url("+GM_getResourceURL('woff2')+") format('woff2'),"+
  121. "url("+GM_getResourceURL('woff')+") format('woff'),"+
  122. "url("+GM_getResourceURL('tif')+") format('truetype'),"+
  123. "url("+GM_getResourceURL('svg')+") format('svg');}"+
  124.  
  125. ".demo-icon{font-family:'iconfont';font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;text-align:center;font-variant:normal;text-transform:none;font-size:24px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:24px;color:#999; }"+
  126.  
  127. ".cndns-right{position:fixed;right:10px;top:70%;margin-top:-100px;z-index:100}"+
  128. ".cndns-right-meau{position:relative;}"+
  129. ".cndns-right-btn{width:48px;height:48px;border:1px solid #ddd;text-align:center;display:block;margin-bottom:6px;position:relative;background-color:#fff}"+
  130. ".cndns-right-btn span{color:#848484;font-size:26px;line-height:48px;}"+
  131. ".cndns-right-btn p{color:#258CFF;font-size:14px;line-height:18px;padding-top:5px;display:none;}"+
  132. ".cndns-right-btn sup{display:block;min-width:21px;height:21px;text-align:center;line-height:18px;color:#fff;border-radius: 50%;background-color:#ff6800;position:absolute;left:-11px;top:-11px;}"+
  133. ".cndns-right-meau:hover .cndns-right-btn span{display:none}"+
  134. ".cndns-right-meau:hover .cndns-right-btn p{display:block;color:#848484;}"+
  135. ".meau-car .cndns-right-btn {border-color:#258CFF;margin-bottom:20px;background-color:#258CFF;}"+
  136. ".meau-car.cndns-right-meau:hover .cndns-right-btn{background-color:#258CFF;}"+
  137. ".meau-car.cndns-right-meau:hover .cndns-right-btn p{color:#fff;}"+
  138. ".meau-car .cndns-right-btn span{color:#fff;}"+
  139.  
  140. ".meau-top .cndns-right-btn p{display:none;color:#999}"+
  141. ".meau-top.cndns-right-meau:hover .cndns-right-btn{background-color:#258CFF}"+
  142. ".meau-top.cndns-right-meau:hover .cndns-right-btn span{display:none;color:#fff} "+
  143. ".meau-top.cndns-right-meau:hover .cndns-right-btn p{display:block;color:#fff;}"
  144. );
  145.  
  146. //添加html
  147. var rightBox = "<div class='cndns-right'>"+
  148. "<div class='cndns-right-meau meau-car'><a href='#' class='cndns-right-btn' id='dow'><span class='demo-icon'>&#xe62D;</span><sup id='closeEx'>X</sup><p>立即<br />下载</p></a></div>"+
  149. "<div class='cndns-right-meau meau-sev func' style='display:none'><a href='#' class='cndns-right-btn' id='con'><span class='demo-icon'>&#xe636;</span><p>转换<br />格式</p></a></div>"+
  150. "<div class='cndns-right-meau meau-contact func' style='display:none'><a href='#' class='cndns-right-btn' id='cop'><span class='demo-icon'>&#xe63D;</span><p>复制<br />文本</p></a></div>"+
  151. "<div class='cndns-right-meau meau-top func' style='display:none' id='top-back'><a href='javascript:' class='cndns-right-btn''><span class='demo-icon'>&#xe628;</span><p>返回<br />顶部</p></a></div>"+
  152. "</div>";
  153.  
  154. return rightBox;
  155. };
  156.  
  157.  
  158. function showContentBox(str){
  159. var ua = navigator.userAgent;
  160. var opacity = '0.95';
  161. if (ua.indexOf("Edge") >= 0) {
  162. opacity = '0.6';
  163. } else{
  164. opacity = '0.95';
  165. }
  166. var copyTextBox = '<div id="copy-text-box" style="width:100%;height:100%;position: fixed;z-index: 9999;display: block;top: 0px;left: 0px;background:rgba(230,230,230,' + opacity + ');-webkit-backdrop-filter: blur(20px);display: flex;justify-content:center;align-items:center;">'+
  167. '<div id="copy-text-box-close" style="width:100%;height:100%;position:fixed;top:0px;left:0px;"></div>'+
  168. '<div style="background:rgba(255,255,255,1);width:965px;z-index:10000;max-height:100%;overflow:auto;-moz-box-shadow: 2px 2px 10px #909090;-webkit-box-shadow: 2px 2px 10px #909090;box-shadow:2px 2px 10px #909090;"><pre id="copy-text-content" style="margin:5% 13% 5% 13%;font-size:16px;line-height:30px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;word-break:break-all;"></pre></div>'+
  169. '</div>"';
  170. $('#copy-text-box').remove();
  171. $('body').append(copyTextBox);
  172. $('#copy-text-content').html(str);
  173. $('#copy-text-box-close').click(function() {
  174. $('#copy-text-box').remove();
  175. });
  176. }
  177.  
  178. function copyContent_all(){
  179. copyContent_one($(".inner"));
  180. };
  181.  
  182. function copyContent_one($inner){
  183. //提取文字
  184. var str = "";
  185. $inner.find('.reader-word-layer').each(function(){
  186. str += $(this).text().replace(/\u2002/g, ' ');
  187. });
  188. str = str.replace(/。\s/g, '。\r\n');
  189.  
  190. //提取css中的图片
  191. var picHtml = "";
  192. var picUrlReg = /[\'\"](https.*?)[\'\"]/ig;
  193. var cssUrl = "";
  194. var picNum = 0;
  195. var picUrlLengthMin = 65;
  196. var picTemplate = "<div style='margin:10px 0px;text-align:center;'><img src='@' width='90%'><div>____图(#)____</div></div>";
  197. $inner.find('.reader-pic-item').each(function(){
  198. cssUrl= $(this).css("background-image");
  199. //在css中的情况
  200. if(!!cssUrl && (cssUrl.indexOf("http")!=-1 || cssUrl.indexOf("HTTP")!=-1)){
  201. var array = cssUrl.match(picUrlReg);
  202. if(array.length>0){
  203. cssUrl = array[0].replace(/\"/g, "");
  204. if(!!cssUrl && cssUrl.length>picUrlLengthMin){
  205. picNum ++;
  206. var onePic = picTemplate;
  207. onePic = onePic.replace(/#/g,picNum);
  208. onePic = onePic.replace(/@/g,cssUrl);
  209. picHtml += onePic;
  210. }
  211. }
  212. }
  213. });
  214.  
  215. //如果还有img标签,一并提取出来
  216. var srcUrl = "";
  217. $inner.find('img').each(function(){
  218. srcUrl = $(this).attr("src");
  219. if(!!srcUrl && srcUrl.length>picUrlLengthMin && srcUrl.indexOf("https://wkretype")!=-1){
  220. picNum ++;
  221. var onePic = picTemplate;
  222. onePic = onePic.replace(/#/g,picNum);
  223. onePic = onePic.replace(/@/g,srcUrl);
  224. picHtml += onePic;
  225. }
  226. });
  227.  
  228. //追加内容
  229. var contentHtml = str+picHtml;
  230. if(!!contentHtml && contentHtml.length>0){
  231. if(picNum!=0){
  232. contentHtml = str+"<div style='color:red;text-align:center;margin-top:20px;'>文档中的图片如下:</div>"+picHtml;
  233. }
  234. showContentBox(contentHtml);
  235. }else{
  236. alert("提取失败");
  237. }
  238. }
  239. })();