知网下载助手

解析CNKI论文PDF格式下载地址,支持论文搜索、硕博论文、知网空间、在线阅读页面,默认替换原链接为pdf格式下载链接,支持导出目录,支持一键切换caj和pdf格式下载链接

  1. // ==UserScript==
  2. // @name 知网下载助手
  3. // @namespace wyn665817@163.com
  4. // @version 2.0.2
  5. // @description 解析CNKI论文PDF格式下载地址,支持论文搜索、硕博论文、知网空间、在线阅读页面,默认替换原链接为pdf格式下载链接,支持导出目录,支持一键切换caj和pdf格式下载链接
  6. // @author wyn665817
  7. // @match https://www.cnki.net/
  8. // @include */DefaultResult/Index*
  9. // @include */KNS8/AdvSearch*
  10. // @include */detail.aspx*
  11. // @include */CatalogViewPage.aspx*
  12. // @include */Article/*
  13. // @connect cnki.net
  14. // @run-at document-end
  15. // @grant unsafeWindow
  16. // @grant GM_xmlhttpRequest
  17. // @grant GM_setClipboard
  18. // @grant GM_registerMenuCommand
  19. // @grant GM_unregisterMenuCommand
  20. // @supportURL https://gf.qytechs.cn/zh-CN/scripts/371938/feedback
  21. // @license MIT
  22. // ==/UserScript==
  23.  
  24. var $ = unsafeWindow.jQuery,
  25. url = location.pathname,
  26. i = 0, $btn;
  27.  
  28. if (!$ || !$('[class$=footer]:contains(中国知网)').length) {
  29. } else if (url.match(/defaultresult\/index$/i) || url.match(/KNS8\/AdvSearch$/i)) {
  30. $(document).ajaxSuccess(function() {
  31. if (arguments[2].url.indexOf('/Brief/GetGridTableHtml') + 1) url = $('.downloadlink').attr('href', reUrl);
  32. });
  33. $btn = GM_registerMenuCommand('切换为CAJ下载链接', change);
  34. } else if (url.match(/detail\.aspx$/) && location.search.match(/dbcode=C[DM][FM]D&/i)) {
  35. url = $('a:contains(分章下载)').attr('href') || '?';
  36. url = 'https://chn.oversea.cnki.net/kcms/download.aspx?dflag=catalog&' + url.match(/filename=.+?(&|$)/)[0];
  37. GM_xmlhttpRequest({method: 'GET', url: url, onload: done});
  38. url = $('.operate-btn a').attr('href', function() {
  39. var tip = $(this).text().trim();
  40. if (!tip.match(/^分[页章]下载$/)) return tip == '整本下载' ? reUrl.call(this) : this.href;
  41. tip = this.href.replace(/kns8?(?!\/)/, 'gb.oversea');
  42. if (tip == this.href) return $(this).attr('title', '此镜像网站不支持解析该PDF链接') && tip;
  43. return $(this).data('CAJ', this.href).data('PDF', tip.replace(/&(.*?)cflag=\w*|$/, '&$1cflag=pdf')).data('PDF');
  44. });
  45. $btn = GM_registerMenuCommand('切换为CAJ下载链接', change);
  46. } else if (url.match(/CatalogViewPage\.aspx$/)) {
  47. $btn = $('#downLoadFile > span').contents().slice(0, 3);
  48. $btn.eq(0).before($btn.clone()).attr('src', function() {
  49. return this.src.replace('CAJ', 'PDF');
  50. }).next().attr('href', reUrl).text('PDF全文下载');
  51. } else if (url.match(/^\/Article\//)) {
  52. $btn = $('#down_3').attr('id', 'down_1').find('#ty_caj');
  53. $btn.clone().insertBefore($btn).attr('id', 'ty_pdf').find('a').attr('href', function() {
  54. return this.href.replace('=caj&', '=pdf&');
  55. }).text('PDF全文下载');
  56. }
  57.  
  58. function reUrl() {
  59. return $(this).data('CAJ', this.href).data('PDF', this.href.replace(/&(.*?)dflag=\w*|$/, '&$1dflag=pdfdown')).data(i % 2 ? 'CAJ' : 'PDF');
  60. }
  61.  
  62. function change() {
  63. var type = ++i % 2 ? ['CAJ', 'PDF'] : ['PDF', 'CAJ'];
  64. url.attr('href', function() {
  65. return $(this).data(type[0]) || this.href;
  66. });
  67. $('.rootw').prev().find('title').text(type[0] + '链接-中国知网');
  68. GM_unregisterMenuCommand($btn);
  69. $btn = GM_registerMenuCommand('切换为' + type[1] + '下载链接', change);
  70. }
  71.  
  72. function done(xhr) {
  73. var list = $('tr', xhr.responseText).map(function() {
  74. var $dom = $(this).find('a, td:last');
  75. return $dom.eq(0).html().trim().replace(/ /g, ' ') + '\t' + $dom.eq(1).text().trim().split('-')[0];
  76. }).get().join('\r\n').replace(/ {4}/g, '\t'),
  77. blob = new Blob([list]);
  78. $('<li class="btn-dlpdf"><a href="javascript:void(0);">复制目录</a></li>').prependTo('.operate-btn').click(function() {
  79. GM_setClipboard(list);
  80. alert('目录已复制到剪贴板');
  81. }).toggle(!!list);
  82. $('<li class="btn-dlcaj"><a>下载目录</a></li>').prependTo('.operate-btn').toggle(!!list).children().each(function() {
  83. this.download = $('.wx-tit h1').text().trim() + '_目录.txt';
  84. this.href = URL.createObjectURL(blob);
  85. }).css('margin-right', '3px');
  86. }

QingJ © 2025

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