维普期刊详情页真实预览图-免登陆

在期刊文章的详情页,自动将模糊的预览图改为真实的图片(若是没有预览图则用不了此脚本)。对于多页的文章,可以点开预览图后手动下载(另存为jpg格式)再合成PDF。支持本地Aria2-RPC下载(默认6800端口)。

  1. // ==UserScript==
  2. // @name 维普期刊详情页真实预览图-免登陆
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.3.3
  5. // @icon http://www.cqvip.com/favicon.ico
  6. // @description 在期刊文章的详情页,自动将模糊的预览图改为真实的图片(若是没有预览图则用不了此脚本)。对于多页的文章,可以点开预览图后手动下载(另存为jpg格式)再合成PDF。支持本地Aria2-RPC下载(默认6800端口)。
  7. // @description 交流:hokis艾foxmail.com
  8. // @author Hokis
  9. // @match http://www.cqvip.com/QK/*/*/*.html
  10. // @match http://www.cqvip.com/qk/*/*/*.html
  11. // @created 2018-12-20
  12. // @lastUpdated 2020-05-15
  13. // @grant none
  14. // @run-at document-end
  15.  
  16. // ==/UserScript==
  17. /* jshint -W097 */
  18.  
  19. (function($) {
  20. 'use strict';
  21. var $viewDiv = $("div.pageview");
  22. //加个按钮
  23. var $previewBtn_a = $('<a href="javascript:void(0);" style="display:block;float:left;margin: 40px auto 0 20px;color: gray;border-color: gray;background-color: white;border-style: double;text-decoration: line-through;font-size: 20px;line-height: 30px;text-align: center;width: 100px;height: 30px;">高清预览</a>');
  24. //存在预览图
  25. if($viewDiv.length == 1){
  26. $previewBtn_a.css({"color": "red","border-color":"red","background-color": "aliceblue","text-decoration": "none"});
  27. $previewBtn_a.one('click',function(){getPreviewPic($viewDiv);});
  28. $viewDiv.find("ul").append($previewBtn_a);
  29. }
  30. else{
  31. var $previewPage = $('<div class="pageview"><ul class="pics"><li></li><div id="cqvip_ad_detailleft2"></div></ul></div>');
  32. $previewBtn_a.text("无预览图");
  33. $previewPage.find("ul").append($previewBtn_a);
  34. $("div.detailinfo").prepend($previewPage);
  35. }
  36.  
  37. function getPreviewPic(viewDiv){
  38. var url,id,$li;
  39. //虚的页数,单行最多4页
  40. var pages = viewDiv.find("ul>li>a");
  41. //1、从【出 处】解析出的页数
  42. var actualPages = parseInt(viewDiv.parent().find("b:contains('【出 处】')").parent().next().text().match(/共\d+页/g)[0].replace("共","").replace("页",""));
  43. //清除浮动
  44. var $divClear = $('<div style="clear: both;"></div>');
  45. var tempCount = 0;
  46. //补充完整
  47. for(var i=pages.length+1;i<= actualPages;i++){
  48. if(tempCount%4 === 0){
  49. //调整大小
  50. viewDiv.find("ul").append($divClear.clone());
  51. var nowHeight = viewDiv.find("ul").height();
  52. nowHeight =(Math.round(i/pages.length)+1)*130;
  53. viewDiv.height(nowHeight).find("ul").height(nowHeight);
  54. }
  55. $li = viewDiv.find("ul>li").eq(0).clone();
  56. $li.find("i").text("第"+i+"页");
  57. $li.appendTo(viewDiv.find("ul"));
  58. tempCount ++;
  59. }
  60. //重新获取
  61. pages = viewDiv.find("ul>li>a");
  62.  
  63. //有内容
  64. if( pages.length > 0){
  65. url = pages[0].href;
  66. var tempArr = url.split("id=");
  67. id = tempArr[tempArr.length-1];
  68.  
  69. new Promise(function(resolve,reject){
  70. $.ajax({
  71. url:url,
  72. dataType:"html",
  73. beforeSend:function(){
  74. viewDiv.find("ul > a").text("获取中...");
  75. },
  76. success:function(result){
  77. resolve(result);
  78. },
  79. error:function(){
  80. reject();
  81. }
  82. });
  83. }).then(function(data){
  84. var resArr = data.match(/pInfo=(.*?)&/g);
  85. if(resArr.length > 0){
  86. var perurl=window.decodeURIComponent(resArr[0].slice(6,-1));
  87. if(perurl.startsWith("http")){
  88. var imgArr = new Array(pages.length);
  89. //生成URL
  90. for(var j = 0; j < pages.length;j++){
  91. imgArr[j] = perurl+"&page="+(j+1)+"&lngID="+id;
  92. }
  93. //执行替换
  94. $.each(pages,function(index,p){
  95. p.href = imgArr[index];
  96. $(p).find("img")[0].src = imgArr[index];
  97. });
  98. }
  99.  
  100. $previewBtn_a.css("width","150px").text("发送到Aria2");
  101. $previewBtn_a.one('click',function(){sendToAria2RPC(imgArr,$(document.querySelector("h1")).text().replace(/[\\\/:\*\?\"<>\|]/g," "));});
  102. }
  103. }).catch(function(err){
  104. viewDiv.find("ul > a").text("高清预览");
  105. });
  106.  
  107. }
  108. }
  109.  
  110. function sendToAria2RPC(urls,path){
  111. if($.isArray(urls)){
  112. $.each(urls,function(index,url){
  113. var json_rpc = {
  114. id:'',
  115. jsonrpc:'2.0',
  116. method:'aria2.addUri',
  117. params:[
  118. [url],
  119. {
  120. dir:"downloads/"+path,
  121. out:(Array(2).join(0) + (index+1)).slice(-2)+".gif"
  122. }
  123. ]
  124. };
  125. var localRPC='http://127.0.0.1:6800/jsonrpc';
  126. $.ajax({
  127. url:localRPC,
  128. type:'POST',
  129. crossDomain:true,
  130. processData:false,
  131. data:JSON.stringify(json_rpc),
  132. contentType: 'application/json',
  133. success:function(response){
  134. },error:function(err){
  135. console.log("异常:"+err);
  136. }
  137. });
  138. });
  139. $previewBtn_a.css({"width":"170px","height":"80px","line-height":"40px"}).text("已获取高清预览并发送至Aria2-RPC");
  140. }
  141. }
  142. })(window.jQuery);

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址