ScienceDirect下载

避免跳转在线pdf,可直接下载ScienceDirect文献到本地

当前为 2022-09-20 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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
// ==/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 =`<a href=${newlink}><input type=button value="download" onclick="window.location.href(${newlink})"><style>input{color:#ffffff;background-color:#3366cc;border:none}</style></a>`
    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, `<a href="${sciHubBaseURL}` + '$1" target="_blank" class="sci-hub-link">$1</a>');
            $(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();
}