// ==UserScript==
// @name 知网下载工具(支持Endnote+PDF)
// @namespace https://blog.cuger.cn
// @version 0.2.1
// @description 1.支持学位论文PDF导出; 2.支持在论文详情页直接导出RIS!
// @author Dorad
// @include https://kns.cnki.net/kns8/defaultresult/index
// @include https://kns.cnki.net/kcms/detail/detail.aspx*
// @run-at document-idle
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_downlaod
// @grant GM_xmlhttpRequest
// @downloadURL none
// ==/UserScript==
(function() {
var site=window.location.href.toString();
if(site.indexOf('kcms/detail/detail.aspx')!=-1){
// 详情页
var operateBtns = document.getElementById('DownLoadParts').getElementsByClassName('operate-btn')[0];
//operateBtns.removeChild(operateBtns[0]);
console.log(operateBtns);
/*
* RIS Export
*/
// get fileId
var fileId = document.getElementById('paramfilename').value;
var dbName = document.getElementById('paramdbname').value;
var title = document.getElementsByClassName('wx-tit')[0].children[0].text;
var risExportBtn = document.createElement('li');
risExportBtn.setAttribute("class", "btn-dlpdf");
risExportBtn.innerHTML = 'EndNote导出';
risExportBtn.onclick = function(){
console.log('RIS Export: '+title+', '+fileId+', '+dbName);
downloadByFilename(fileId, dbName, title);
}
operateBtns.append(risExportBtn);
pdfDownload();
}else{
// 搜索页
let wrapper = document.getElementsByClassName('wrapper')[0];
console.log(wrapper);
var observer = new MutationObserver(function(changeList){
updateRowItems();
// console.log(changeList);
})
observer.observe(wrapper,{
attributes: true,
subtree: true,
characterData: true,
});
}
})();
function updateRowItems(){
if(document.getElementsByClassName('result-table-list').length==0){
return;
}
var table = document.getElementsByClassName('result-table-list')[0];
// console.log(table)
var rows=table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
for(var i=1;i','\r\n')
console.log(text);
// a.href = 'data:application/x-EndNote-tagged; charset=utf-8,' + encodeURIComponent(text);
a.href = 'data:application/x-EndNote-tagged; charset=utf-8,' + encodeURIComponent(text);
//supported by chrome 14+ and firefox 20+
a.download = name+'.ris';
//needed for firefox
document.getElementsByTagName('body')[0].appendChild(a);
//supported by chrome 20+ and firefox 5+
a.click();
}
}
});
}
function pdfDownload(){
var allLis, thisLi, newLi, aPDF, bPDF, allLinks, thisLink, pageType, pfType, myurl, i;
pageType = true;
pfType = true;
myurl = window.location.href;
allLinks = document.evaluate(
'//a[@href]',
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
allLis = document.evaluate(
"//li[@class]",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
if (myurl.indexOf("detail.aspx") != -1) {
pageType = false;
} //false 为详情页面
if (document.title.indexOf(" - 中国知网") != -1) {
pfType = false;
} //false 为新平台
if ((pfType === true) & (pageType === false)) {
for (i = 0; i < allLis.snapshotLength; i++) {
thisLi = allLis.snapshotItem(i);
if (thisLi.getAttribute("class").indexOf("readol") != -1) {
newLi = document.createElement('li');
newLi.setAttribute("class", "pdf");
aPDF = 'PDF下载';
newLi.innerHTML = aPDF;
thisLi.parentNode.insertBefore(newLi, thisLi.nextSibling);
}
}
}
if ((pfType === false) & (pageType === false)) {
for (i = 0; i < allLinks.snapshotLength; i++) {
thisLink = allLinks.snapshotItem(i);
if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.innerHTML.indexOf("整本") != -1) {
thisLink.innerHTML = thisLink.innerHTML.replace("整本", "CAJ");
bPDF = thisLink.href;
}
if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.innerHTML.indexOf("分页") != -1) {
thisLink.innerHTML = thisLink.innerHTML.replace("分页", "PDF");
thisLink.href = bPDF.replace("nhdown", "pdfdown");
}
}
}
if (pageType === true) {
for (i = 0; i < allLinks.snapshotLength; i++) {
thisLink = allLinks.snapshotItem(i);
if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.href.indexOf("&dflag") == -1) {
thisLink.href = thisLink.href + "&dflag=pdfdown";
}
if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.href.indexOf("&dflag=nhdown") != -1) {
thisLink.href = thisLink.href.replace("nhdown", "pdfdown");
}
if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.href.indexOf("&dflag=pdfdown") != -1 && (thisLink.href.indexOf("=CMFD") != -1 || thisLink.href.indexOf("=CDFD") != -1 )) {
thisLink.href = thisLink.href.replace("pdfdown", "nhdown");
}
}
}
}