// ==UserScript==
// @name Bypass paywalls for scientific documents
// @namespace StephenP
// @version 3.3.3
// @description Bypass paywalls for scientific documents by downloading them from sci-hub instead of paying something like 50 bucks for each paper. This script adds download buttons on Google Scholar, Scopus and Web Of Science, which lead to sci-hub.tw. In this way you can get free access to scientific papers even if you (or your university) can't afford their prices.
// @author StephenP
// @include http://scholar.google.*/scholar?*
// @match http://www.scopus.com/record/display.uri?*
// @match http://apps.webofknowledge.com/full_record.do?*
// @match http://apps.webofknowledge.com/InterService.do?*
// @match http://apps.webofknowledge.com/CitedFullRecord.do?*
// @include https://scholar.google.*/scholar?*
// @match https://www.scopus.com/record/display.uri?*
// @match https://apps.webofknowledge.com/full_record.do?*
// @match https://apps.webofknowledge.com/InterService.do?*
// @match https://apps.webofknowledge.com/CitedFullRecord.do?*
// @grant none
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
//If Sci-Hub address changes, just replace the URL below with the new one
var sciHubUrl='https://sci-hub.tw/';
var documentId;
var site=window.location.href.toString();
var i;
if(site.includes("://www.scopus.com/")){
var fullDocument=document.querySelector('[title="Full Text(opens in a new window)"]');
//fullDocument.href=fullDocument.href.slice(54);
documentId=document.getElementById("recordDOI").innerHTML;
var section=document.getElementById("outwardLinks");
section.removeChild(section.lastChild);
fullDocument.parentNode.insertAdjacentHTML('beforeend','
Donate to Sci-Hub project|');
fullDocument.parentNode.children[4].addEventListener("click", function(){window.open(sciHubUrl+documentId);});
fullDocument.parentNode.children[4].style.cursor="pointer";
//setAttribute('onclick','window.open(\"'+sciHubUrl+documentId+'\");');
fullDocument.parentNode.children[5].addEventListener("click", function(){donate(sciHubUrl);});
fullDocument.parentNode.children[5].style.cursor="pointer";
//setAttribute('onclick',donate(sciHubUrl));
}
else if(site.includes("://apps.webofknowledge.com/")){
var mode;
var genericID=document.getElementsByClassName("block-record-info block-record-info-source")[0].getElementsByClassName("FR_label");
for(i=0;i<=genericID.length;i++){
if((genericID[i].innerHTML==="DOI:")||(genericID[i].innerHTML==="PMID:")){
documentId=genericID[i].parentNode.children[1].innerHTML;
alert(documentId);
break;
}
}
if(documentId!==undefined){
addButtonWOS(sciHubUrl,documentId);
}
}
else if(site.includes("://scholar.google.")){
var resourcesList=document.getElementById('gs_res_ccl_mid');
var results=resourcesList.children.length;
var gs_ggs_gs_fl;
for(i=0;iDonate to Sci-Hub project');
list.lastChild.lastChild.removeAttribute("href");
list.lastChild.lastChild.addEventListener("click", function(){donate(sciHubUrl);});
list.lastChild.lastChild.style.cursor="pointer";
list.insertBefore(sciHubBtn,list.lastChild);
}
catch(err){
console.log(err);
}
//setAttribute('onclick',donate(sciHubUrl));
}
function addButtonScholar(sciHubUrl,linkDiv){
//alert(linkDiv.innerHTML);
var link;
try{
link=linkDiv.getElementsByTagName("A")[0].href;
}
catch(err){
link=linkDiv.parentNode.getElementsByClassName("gs_rt")[0].getElementsByTagName("A")[0].href;
}
if(link.includes("scholar?output")){
link=linkDiv.parentNode.getElementsByClassName("gs_rt")[0].getElementsByTagName("A")[0].href;
}
if(link!=undefined){
var creatingElement;
if((link!=undefined)&&(link.search("patents.google")==-1)){
creatingElement=document.createElement("a");
creatingElement.innerHTML='Search on Sci-Hub';
linkDiv.getElementsByClassName("gs_or_ggsm")[0].appendChild(creatingElement);
linkDiv.getElementsByClassName("gs_or_ggsm")[0].lastChild.addEventListener("click", function(){window.open(sciHubUrl+link);});
linkDiv.getElementsByClassName("gs_or_ggsm")[0].lastChild.style.cursor="pointer";
//setAttribute("onclick",'window.open(\"'+sciHubUrl+link+'\");');
}
}
document.head.innerHTML = document.head.innerHTML.replace(/13px 8px 9px 8px/g, '0px 8px 0px 8px');
}
function donate(sciHubUrl){
window.open(sciHubUrl+'#donate');
}