CNKI PDF Download

中国知网PDF下载(搜索列表)

  1. // ==UserScript==
  2. // @name CNKI PDF Download
  3. // @description 中国知网PDF下载(搜索列表)
  4. // @author Jachin
  5. // @version 0.4
  6. // @license MIT
  7. // @grant GM_registerMenuCommand
  8. // @namespace http://tampermonkey.net/
  9. // @include *://kns.cnki.net/kns8/defaultresult/index*
  10. // @include *://oversea.cnki.net/kns/defaultresult/index*
  11. // @include *://*.res.gxlib.org.cn/kns*
  12. // @exclude *://image.cnki.net/*
  13. // @include *://kns.cnki.net/kns8/defaultresult/index*
  14. // @include *://oversea.cnki.net/kns/defaultresult/index*
  15. // @include */kns/brief/*
  16. // @include */kns55/brief/*
  17. // @include */grid2008/brief/*
  18. // @include */kcms/detail/detail.aspx*
  19. // @include *://er.szlib.org.cn/rwt/331/*
  20.  
  21. // ==/UserScript==
  22.  
  23.  
  24. function get_pdf_url(url){
  25. let url_obj = new URL(url);
  26. url_obj.searchParams.set('dflag', "pdfdown");
  27. return url_obj.toString();
  28. }
  29.  
  30. function add_pdf_download(){
  31. var $ = selector => Array.from(document.querySelectorAll(selector));
  32. $(".operat").forEach(i => {
  33. if(i.querySelector(".icon-download-pdf") != null)
  34. return
  35. if(i.querySelectorAll("a.downloadlink").length >= 2)
  36. return
  37. let download_node = i.querySelector(".downloadlink");
  38. if(download_node == null)
  39. return
  40. let pdf_download_node = download_node.cloneNode(true);
  41. pdf_download_node.href = get_pdf_url(pdf_download_node.href);
  42. pdf_download_node.classList.add("icon-download-pdf");
  43. pdf_download_node.classList.remove("icon-download");
  44. pdf_download_node.title = "download_pdf"
  45. pdf_download_node.querySelector("i").style.backgroundPosition = "-2px -140px"
  46.  
  47. i.insertBefore(pdf_download_node, download_node);
  48. i.style.minWidth = "112px";
  49. })
  50. }
  51.  
  52. (function() {
  53. 'use strict';
  54. let observer = new MutationObserver(add_pdf_download);
  55. let options = {
  56. 'childList': true,
  57. 'attributes':true
  58. };
  59.  
  60. observer.observe(document.querySelector(".main"), options);
  61.  
  62. GM_registerMenuCommand(`PDF`, add_pdf_download);
  63. })();