nature direct download

download Nature & sub Publications via CALIS access 直接下载Natue及其子刊

  1. // ==UserScript==
  2. // @name nature direct download
  3. // @namespace minhill.com
  4. // @description download Nature & sub Publications via CALIS access 直接下载Natue及其子刊
  5. // @include http://www.nature.com/*
  6. // @include https://www.nature.com/*
  7. // @version 1.1
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. //////////metainfo///////////////
  12. var journalInfo={
  13. /*
  14. nature:{
  15. name:"nature",
  16. //citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/.*?(\d+)[a-z]*?\.ris/,
  17. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  18. directLink:"",
  19. insertNode:""
  20. },
  21. nclimate:{
  22. name:"nclimate",
  23. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  24. directLink:"",
  25. insertNode:""
  26. },
  27. ngeo:{
  28. name:"ngeo",
  29. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  30. directLink:"",
  31. insertNode:""
  32. },*/
  33. common:{
  34. name:"common",
  35. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  36. directLink:"",
  37. insertNode:function(directLink){
  38. var insertParentNode = document.getElementsByClassName("tools")[0];
  39. insertParentNode.innerHTML += '<li id="directdownload" class="download-pdf">'+
  40. '<a style="color:red" target="_blank" href="'+directLink+'">Direct download</a>'+
  41. '</li>';
  42. }
  43. },
  44. common2:{
  45. name:"common2",
  46. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  47. directLink:"",
  48. insertNode:function(directLink){
  49. var insertParentNode = document.getElementsByClassName("links")[0];
  50. insertParentNode.innerHTML += '<li id="directdownload" class="permissions"><a style="color:red" target="_blank" href="'+directLink+'">Direct download via CALIS</li></a>';
  51. }
  52. },
  53. common3:{
  54. name:"common3",//为有PDF的情况,纯测试
  55. citeReg:/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?)\.ris/,
  56. directLink:"",
  57. insertNode:function(directLink){
  58. var insertParentNode = document.getElementsByClassName("download-pdf")[0];
  59. insertParentNode.innerHTML += '<a style="color:red" id="directdownload" class="download-pdf" target="_blank" href="'+directLink+'">Direct download via CALIS</a>';
  60. }
  61. },
  62. }
  63.  
  64. //var supportList=["nature","nclimate",""]
  65. var metainfo={
  66. citationLink:null,
  67. type:null
  68. }
  69.  
  70.  
  71. ////insert function
  72. function insertPDFLink(citationLink,journal){
  73. //alert(citationLink);
  74. //var risElements=citationLink.match(/nature.com\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/(.*?).ris/);
  75. var risElements=citationLink.match(journal.citeReg);
  76. ///\/(.*?)\/.*?\/v(\d*?)\/n(\d*?)\/.*?\/\w*?(\d*?).ris/
  77. //alert(risElements[4]);
  78. var directLink = "http://fulltext.calis.edu.cn/nature/"+risElements[1]+"/"+risElements[2]+"/"+risElements[3]+"/"+risElements[4]+".pdf";
  79. journal.insertNode(directLink);
  80. //http://fulltext.calis.edu.cn/nature/nclimate/4/10/nclimate2357.pdf
  81. //alert(directLink);
  82. /*
  83. var insertParentNode = document.getElementsByClassName("tools")[0];
  84. //alert(insertParentNode.innerHTML);
  85. insertParentNode.innerHTML += '<li id="directdownload" class="download-pdf">'+
  86. '<a target="_blank" href="'+directLink+'">直接下载</a>'+
  87. '</li>';
  88. */
  89. }
  90. //////end////
  91.  
  92.  
  93. /////////main////////////
  94. if(document.getElementsByClassName("download-citation").length){
  95. metainfo.citationLink=document.getElementsByClassName("download-citation")[0].getElementsByTagName("a")[0].href;
  96. metainfo.type="common";
  97. }
  98. else if(document.getElementsByClassName("export-citation").length){
  99. metainfo.citationLink=document.getElementsByClassName("export-citation")[0].getElementsByTagName("a")[0].href;
  100. metainfo.type="common2";
  101. }
  102. else if(document.getElementsByClassName("supplementary").length){
  103. metainfo.citationLink=document.getElementById("articlenav").getElementsByClassName("supplementary")[0].getElementsByTagName("li")[0].getElementsByTagName("a")[0].href;
  104. metainfo.type="common3";
  105. }
  106.  
  107.  
  108. if(metainfo.citationLink){
  109. //alert(metainfo.citationLink);
  110. var journal = metainfo.citationLink.match(/nature.com\/(.*?)\//)[1].toString();
  111. if(journalInfo[journal]){
  112. insertPDFLink(metainfo.citationLink,journalInfo[journal]);
  113. }
  114. else{
  115. insertPDFLink(metainfo.citationLink,journalInfo[metainfo.type]);
  116. }
  117. }