// ==UserScript== // @id CNKI_PDF_Supernova // @name 知网PDF下载助手 // @version 3.2.4 // @namespace https://github.com/supernovaZhangJiaXing/Tampermonkey/ // @author Supernova // @description 直接以PDF格式下载知网上的文献, 包括期刊论文和博硕士论文 // @include http*://*.cnki.net/* // @include http*://*.cnki.net.*/* // @include */DefaultResult/Index* // @include */KNS8/AdvSearch* // @include */detail.aspx* // @include */CatalogViewPage.aspx* // @include */Article/* // @include */kns/brief/* // @include */kns55/brief/* // @include */grid2008/brief/* // @include */detail/detail.aspx* // @exclude http://image.cnki.net/* // @require https://unpkg.com/pdf-lib@1.13.0/dist/pdf-lib.js // @require https://cdn.jsdelivr.net/gh/tabedit/code-segment@f730e9d9573c4ca7e758766e6a8fb282faae38af/outline.esm.js // @run-at document-idle // @grant unsafeWindow // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== 'use strict'; var $ = unsafeWindow.jQuery; var contents = ''; var pdf; $(document).ready(function() { var myurl = window.location.href; var isDetailPage = myurl.indexOf("detail.aspx") != -1 ? true: false; // 点进文献后的详情页 var isContentPage = myurl.indexOf("kdoc/download.aspx?") != -1 ? true : false; // 分章下载 if (isDetailPage === false) { if (window.location.href.indexOf("kns8") != -1){ // 文献检索页面, 防止在别处出现 $(document).ajaxSuccess(function() { if (arguments[2].url.indexOf('/Brief/GetGridTableHtml') + 1) { // 防止标志-链接不匹配, 统一默认转换为PDF // 来自: https://greasyfork.org/zh-CN/scripts/371938 $('.downloadlink').attr('href', toPDF); convert_box.innerText = "当前默认下载格式: PDF (点击转换)"; } }); var convert_box = document.createElement("div"); convert_box.innerText = "当前默认下载格式: PDF (点击转换)"; convert_box.className = "ecp_tn-tab"; convert_box.style = "color: blue; font-weight: bolder"; convert_box.onclick = function() { // TODO: 改成用flag控制 if (convert_box.innerText == "当前默认下载格式: PDF (点击转换)") { convert_box.innerText = "当前默认下载格式: CAJ (点击转换)"; $('.downloadlink').attr('href', toCAJ); } else if (convert_box.innerText == "当前默认下载格式: CAJ (点击转换)") { convert_box.innerText = "当前默认下载格式: PDF (点击转换)"; $('.downloadlink').attr('href', toPDF); } }; var mycnki = $('#icnki'); mycnki.parent()[0].insertBefore(convert_box, mycnki.nextElementSibling); } } else { // 只对"博硕论文"详情页做优化, 否则影响期刊页面的显示 // 来自: https://greasyfork.org/zh-CN/scripts/371938 if (location.search.match(/dbcode=C[DM][FM]D&/i)) { // 整本下载替换为CAJ下载 $(".btn-dlcaj").first().html($(".btn-dlcaj").first().html().replace("整本", "CAJ")); // pdf文件的url var pdf_url = $(".btn-dlpdf").remove().find("a").attr("href").replace("&dflag=downpage", "&dflag=pdfdown"); // 添加PDF下载 var pdf_down = $('
'
+ '点击下载目录合并软件及说明
提取码: y77f'))
}
}
});
// 来自: https://greasyfork.org/zh-CN/scripts/371938
function toCAJ() {
return $(this).data('CAJ', this.href.replace(/&dflag=\w*|$/, '&dflag=nhdown')).data("CAJ");
}
function toPDF() {
return $(this).data('PDF', this.href.replace(/&dflag=\w*|$/, '&dflag=pdfdown')).data("PDF");
}
function get_content(cnt_list){
var contents = "";
for (var i = 0; i < cnt_list.length - 1; i++) { // 长度减一, 因为最后一个是text
var cnt_item = cnt_list[i].childNodes[1].childNodes[1];
cnt_item = cnt_item.innerHTML;
var cnt_page = cnt_list[i].childNodes[3].childNodes[0].textContent.trim().split("-")[0]; // 知网的目录给的是个范围, 正常只需要前半部分
contents = contents + cnt_item.trim().replace(/ /g, " ").replace(/ {4}/g, "\t") + "\t" + cnt_page + "\r\n";
}
return contents;
}
// 来自: https://greasyfork.org/zh-CN/scripts/371938
function manage_contents(xhr) {
var cnt_list = $('tr', xhr.responseText); // 目录列表
var contents = get_content(cnt_list); // 目录内容
// 添加目录复制
$('.btn-dlpdf').first().after($('