// ==UserScript==
// @name ScienceDirect Download
// @name:zh-CN ScienceDirect下载
// @namespace tampermonkey.com
// @version 1.1
// @license MIT
// @description Avoid jumping to online pdf, and directly download ScienceDirect literature to local
// @description:zh-CN 避免跳转在线pdf,可直接下载ScienceDirect文献到本地
// @match https://*.sciencemag.org/*
// @match http*://*.webofknowledge.com/*
// @match https://academic.oup.com/*
// @match https://academic.microsoft.com/*
// @match https://dl.acm.org/doi/*
// @match https://ieeexplore.ieee.org/*
// @match https://journals.sagepub.com/*
// @match https://link.springer.com/*
// @match https://onlinelibrary.wiley.com/doi/*
// @match https://psycnet.apa.org/*
// @match https://pubmed.ncbi.nlm.nih.gov/*
// @match https://pubs.rsc.org/*
// @match https://pubs.acs.org/doi/*
// @match https://pubsonline.informs.org/doi/abs/*
// @match https://schlr.cnki.net/Detail/index/*
// @match https://schlr.cnki.net//Detail/index/*
// @match https://xueshu.baidu.com/usercenter/paper/*
// @match https://www.ingentaconnect.com/*
// @match https://www.jstor.org/*
// @match https://www.nature.com/*
// @match https://www.ncbi.nlm.nih.gov/*
// @match https://www.sciencedirect.com/*
// @match http://www.socolar.com/*
// @match https://www.scinapse.io/*
// @match https://www.science.org/*
// @match https://www.tandfonline.com/*
// @match https://www.webofscience.com/wos/*
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js
// @require https://openuserjs.org/src/libs/sizzle/GM_config.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @grant GM.xmlHttpRequest
// @downloadURL none
// ==/UserScript==
// global variables
const defaultBaseURL = "https://sci-hub.se";
let sciHubBaseURL;
const doiRegex = new RegExp('(10\.\\d{4,}/[-._;()/:\\w]+)');
const completePrefix = ['http://dx.doi.org/', 'https://doi.org/', 'https://dx.doi.org/'];
const partialPrefix = ['//dx.doi.org/'];
// Initialize configuration page
GM_config.init({
'id': 'DOI2Sci-Hub',
'title': 'Settings',
'fields': {
'UserDefinedBaseURL': {
'label': 'Custom Sci-Hub URL',
'type': 'text',
'default': ''
}
}
});
const callback = function(mutationsList, observer) {
if (!$('.sci-hub-link').length) {
// Web of Science New Interface
convertPlainTextDOI('span#FullRTa-DOI');
// scinapse
convertPlainTextDOI('span[class*="doiInPaperShow_doiContext"]');
// PsycNet
// journal article info page
convertPlainTextDOI('div.citation div a');
// search result page
convertPlainTextDOI('a[tooltip="DOI link"]');
}
convertHrefDOI(completePrefix, true);
convertHrefDOI(partialPrefix, false);
};
(function () {
'use strict';
// get rawlink
var head = document.head;
// creat newlink
var linkid = head.getElementsByTagName('meta')[0].content;
if (linkid){
var newlink = linkid + '/pdfft?isDTMRedir=true&download=true';
let Container = document.createElement('div');
Container.id = "sp-ac-container";
Container.style.position="fixed"
Container.style.left="300px"
Container.style.top="28px"
Container.style['z-index']="999999"
Container.innerHTML =``
document.body.appendChild(Container);
console.log(newlink)}
})();
(function () {
'use strict';
GM_registerMenuCommand("Settings", openSettingsPanel, "s");
const userDefinedBaseURL = GM_config.get('UserDefinedBaseURL');
if (userDefinedBaseURL.length != 0) {
console.log('Load user-defined base URL');
sciHubBaseURL = userDefinedBaseURL.trim();
sciHubBaseURL += sciHubBaseURL.endsWith("/") ? "" : "/";
redirectToSciHub();
return
}
console.log('Skip user-defined base URL');
GM.xmlHttpRequest({
method: "GET",
url: "https://sci-hub.41610.org/",
onload: function (response) {
let data = response.responseText;
sciHubBaseURL = $('li > a[href^="https://sci-hub"]', data).first().attr('href') ?? defaultBaseURL
sciHubBaseURL += sciHubBaseURL.endsWith("/") ? "" : "/"
redirectToSciHub()
}
});
})();
function redirectToSciHub() {
// hyperlink
convertHrefDOI(completePrefix, true);
convertHrefDOI(partialPrefix, false);
let observer = new MutationObserver(callback);
const config = { childList: true, subtree: true };
observer.observe(document, config);
// Plain text
// Science
convertPlainTextDOI('.meta-line:contains("DOI: 10.")');
// Web of Science
convertPlainTextDOI('.FullRTa-DOI:contains("DOI:")');
// Baidu Scholar
convertPlainTextDOI('.doi_wr > .kw_main');
// CNKI Scholar
convertPlainTextDOI('.doc-doi > a');
// PubMed
convertPlainTextDOI('span:contains("doi: 10")');
}
function convertPlainTextDOI(doiTextLineSelector) {
if ($(doiTextLineSelector).length) {
$(doiTextLineSelector).each(function () {
let modified = $(this).html().replace(doiRegex, `$1');
$(this).html(modified);
});
$('.sci-hub-link').css('background-color', '#FFFF00');
}
}
function convertHrefDOI(prefixArray, isComplete) {
prefixArray.forEach((prefix) => {
let elements = $(`a[href^="${prefix}"]`);
if (elements.length) {
let doi = "";
elements.each(function () {
if (isComplete == false) {
doi = $(this).text();
} else {
doi = $(this).attr('href');
}
$(this).attr('href', `${sciHubBaseURL}${doi}`);
$(this).css('background-color', '#FFFF00');
});
}
})
}
function openSettingsPanel() {
GM_config.open();
}