// ==UserScript== // @name Sci Hub Injector // @version 1.1 // @description Adds SciHub links to popular publishing websites to make free access to science even easier. // @icon https://git.sr.ht/~lucasew/userscripts/blob/master/sci-hub-injector/icon.png // @namespace scihub-injector // @license GNU GPL v3.0 or later. http://www.gnu.org/copyleft/gpl.html // @include https://pubmed.ncbi.nlm.nih.gov/* // @include https://www.nature.com/* // @include https://www.tandfonline.com/* // @include https://www.sciencedirect.com/* // @include http://www.eurekaselect.com/* // @include https://www.science.org/* // @include https://dom-pubs.onlinelibrary.wiley.com/doi/* // @include https://link.springer.com/* // @include https://ieeexplore.ieee.org/* // @downloadURL none // ==/UserScript== (function () { function sciHubLink(doi) { return `https://sci-hub.se/${doi}`; } function pubMed() { const doi = document.querySelector(".identifier.doi > a").innerText; const links = document.querySelector(".full-text-links-list"); links.innerHTML += ` full text provider logoSciHub `; } function nature() { const doi = document .querySelector( ".c-bibliographic-information__list-item--doi > p > span.c-bibliographic-information__value" ) .textContent.split(".org/")[1]; const menu = document.querySelector( "aside .c-nature-box.c-nature-box--side.u-hide-print" ); menu.innerHTML += `
Access on SciHub
`; } function taylorFrancis() { const doi = document .querySelector(".dx-doi > a") .textContent.split(".org/")[1]; const menu = document.querySelector(".tab-nav"); menu.innerHTML += ` `; } function sciencedirect() { // Add timeout to prevent them from removing the link... setTimeout(() => { const doi = document.querySelector(".doi").textContent.split(".org/")[1]; const menu = document.querySelector(".toolbar-buttons > ul"); menu.innerHTML += `
  • Access on SciHub
  • `; }, 1000); } function eurekaSelect() { const doiLinks = Array.from(document.querySelectorAll("a")) .filter((a) => a.href.includes("doi.org")) .map((a) => a.href); const doi = doiLinks[0].split(".org/")[1]; const form = document.getElementById("addtocartForm"); form.innerHTML += `
    View on SciHub
    `; } function science() { const doiLinks = Array.from(document.querySelectorAll("a")) .filter((a) => a.href.includes("doi.org")) .map((a) => a.href); const doi = doiLinks[0].split(".org/")[1]; const menu = document.querySelector(".info-panel__formats.info-panel__item"); menu.innerHTML += ` get free access `; } function wiley() { const doiLinks = Array.from(document.querySelectorAll("a")) .filter((a) => a.href.includes("doi.org")) .map((a) => a.href); const doi = doiLinks[0].split(".org/")[1]; const menu = document.querySelector(".coolBar__second.rlist"); menu.innerHTML += ` `; } function springerLink() { const url = document.location.href; const doi = getSpringerDoi(url); if (url.includes("journal")) { springerLinkJournal(); } else if (url.includes("article")) { springerLinkArticle(doi); } else { springerLinkGeneral(doi); } } function getSpringerDoi(url) { return decodeURIComponent(url).match(/10.+?[^#]+/)?.[0]; } function springerLinkJournal() { const articleListElements = Array.from(document.querySelectorAll(".app-volumes-and-issues__article-list > li")); for (const articleElement of articleListElements) { const articleUrl = articleElement.querySelector("h3 a").getAttribute("href"); const doi = getSpringerDoi(articleUrl); articleElement.querySelector(".c-meta").innerHTML += `
  • View on SciHub
  • `; } } function springerLinkArticle(doi) { const details = document.querySelector(".c-article-info-details"); details.innerHTML += ` View On SciHub `; } function springerLinkGeneral(doi) { const contextContainer = document.querySelector(".main-context__container") || document.getElementById("book-metrics"); contextContainer.innerHTML += `
    View On SciHub
    `; } function ieeexploreLink() { let foundLinks = []; document.querySelectorAll("a").forEach(l => { if (l.href.includes("doi.org")) { foundLinks.push(l.href); } }); const doi = foundLinks[0].split(".org/")[1]; const node = document.querySelectorAll(".document-banner-metric-container")[0]; console.log(node) node.outerHTML += ` `; } function addSciHubLink() { const url = document.location.href; if (url.includes("pubmed.ncbi.nlm.nih.gov")) { return pubMed(); } else if (url.includes("nature.com")) { return nature(); } else if (url.includes("tandfonline.com")) { return taylorFrancis(); } else if (url.includes("www.sciencedirect.com")) { return sciencedirect(); } else if (url.includes("eurekaselect.com")) { return eurekaSelect(); } else if (url.includes("science.org")) { return science(); } else if (url.includes("wiley.com")) { return wiley(); } else if (url.includes("link.springer.com")) { return springerLink(); } else if (url.includes("ieeexplore.ieee.org")) { return ieeexploreLink(); } console.log("No SciHub support there") } setTimeout(() => { if (document.readyState == 'complete') { console.log("Freeing the science...") addSciHubLink() } return false }, 1000) })()