/autolink_to_unsw_library_proxy.user.js

http://gsbabil.googlecode.com/ · JavaScript · 198 lines · 130 code · 16 blank · 52 comment · 7 complexity · f6bef221fc9a4f61e13eedf489f05cba MD5 · raw file

  1. // ==UserScript==
  2. // @name AutoLink to UNSW Library Proxy
  3. // @description Rewrites links to download conference papers through UNSW library proxy.
  4. // @include http://ieeexplore.ieee.org/*
  5. // @include http://springerlink.metapress.com/*
  6. // @include http://www.springerlink.com/*
  7. // @include http://portal.acm.org/*
  8. // @include http://www.sciencedirect.com/*
  9. // ==/UserScript==
  10. SITES =
  11. [
  12. /*
  13. *
  14. * Basic Idea:
  15. Rewrite the URL's that leads to "Purchase PDF" on sites like IEEExplore,
  16. SpringerLink, ACM such that they point to URL's through UNSW Library proxy
  17. which lets you download these PDF's for free as long as you are a student
  18. with them.
  19. * Why:
  20. Reduce the number of clicks, mouse-keyboard actions before you get hold of
  21. the desired PDF and start reading.
  22. They are free for the UNSW students anyway. You shouldn't have to perform
  23. 10 clicks and keyboard actions before you get them.
  24. With this script installed in GreaseMonkey, you can just ...
  25. - search in Google for your conference paper
  26. - click on the ACM/Springer/IEEE link
  27. - Once you see the monkey icon (yes, that's right) your PDF is ready to
  28. download.
  29. * Adding Your Own Site:
  30. {
  31. url_snip: "if this variable matches with current URL, actions to re-write link(s) begin",
  32. tag_name: "name of the tag containing the target href",
  33. href_pattern: "this variable is searched over all anchors (<a href>) for which the link need to be re-written upon a match",
  34. snr_pattern: [
  35. {
  36. search: "pattern-to-search-for",
  37. replace: "pattern-to-replace-with",
  38. },
  39. {
  40. search: "more-pattern-to-search-for",
  41. replace: "more-pattern-to-replace-with",
  42. },
  43. ]
  44. },
  45. *
  46. *
  47. */
  48. {
  49. url_snip: "sciencedirect.com",
  50. tag_name: "a",
  51. href_pattern: "sdarticle.pdf",
  52. snr_pattern: [
  53. {
  54. search: "http://www.sciencedirect.com",
  55. replace: "http://www.sciencedirect.com.wwwproxy0.library.unsw.edu.au",
  56. },
  57. ]
  58. },
  59. {
  60. url_snip: "ieeexplore",
  61. tag_name: "a",
  62. href_pattern: "stamp.jsp",
  63. snr_pattern: [
  64. {
  65. search: "http://ieeexplore.ieee.org",
  66. replace: "http://ieeexplore.ieee.org.wwwproxy0.library.unsw.edu.au",
  67. },
  68. ]
  69. },
  70. {
  71. url_snip: "ieeexplore",
  72. tag_name: "a",
  73. href_pattern: "Sarticle.jsp",
  74. snr_pattern: [
  75. {
  76. search: "http://ieeexplore.ieee.org",
  77. replace: "http://ieeexplore.ieee.org.wwwproxy0.library.unsw.edu.au",
  78. },
  79. {
  80. search: "articleSale/Sarticle.jsp",
  81. replace: "stamp/stamp.jsp",
  82. },
  83. ]
  84. },
  85. {
  86. url_snip: "springerlink.*metapress",
  87. tag_name: "a",
  88. href_pattern: "fulltext",
  89. snr_pattern: [
  90. {
  91. search: "http://springerlink.metapress.com",
  92. replace: "http://springerlink.metapress.com.wwwproxy0.library.unsw.edu.au",
  93. },
  94. ]
  95. },
  96. {
  97. url_snip: "www.*springerlink",
  98. tag_name: "a",
  99. href_pattern: "fulltext",
  100. snr_pattern: [
  101. {
  102. search: "http://www.springerlink.com",
  103. replace: "http://www.springerlink.com.wwwproxy0.library.unsw.edu.au",
  104. },
  105. ]
  106. },
  107. {
  108. url_snip: "portal.acm",
  109. tag_name: "a",
  110. href_pattern: "purchase.cfm",
  111. snr_pattern: [
  112. {
  113. search: "http://portal.acm.org",
  114. replace: "http://portal.acm.org.wwwproxy0.library.unsw.edu.au",
  115. },
  116. {
  117. search: "purchase.cfm?",
  118. replace: "ft_gateway.cfm?type=pdf&",
  119. },
  120. ]
  121. },
  122. {
  123. url_snip: "portal.acm",
  124. tag_name: "a",
  125. href_pattern: "ft_gateway.cfm.*type=pdf&coll=DL",
  126. snr_pattern: [
  127. {
  128. search: "http://portal.acm.org",
  129. replace: "http://portal.acm.org.wwwproxy0.library.unsw.edu.au",
  130. },
  131. ]
  132. },
  133. ]
  134. monkey_icon = "data:image/png;base64,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"
  135. function find_tags(tag_name, href_pattern)
  136. {
  137. var tags = document.getElementsByTagName(tag_name);
  138. var href_tags = new Array();
  139. for (var i=0;i<tags.length;i++)
  140. {
  141. if (tags[i].href.match(href_pattern))
  142. {
  143. href_tags[href_tags.length] = tags[i];
  144. }
  145. }
  146. return href_tags;
  147. }
  148. function rewrite_href(href_tags, snr_pattern)
  149. {
  150. for (var i=0;i<href_tags.length;i++)
  151. {
  152. /* replace old link, with new */
  153. newElement = document.createElement("a");
  154. node = href_tags[i].parentNode.insertBefore(newElement, href_tags[i].nextSibling);
  155. node.style.textDecoration = "blink";
  156. node.innerHTML = "[ Down<img style='border:0px' src=" + monkey_icon + ">Load ]";
  157. node.href = href_tags[i].href;
  158. node.target = "_blank";
  159. href_tags[i].parentNode.removeChild(href_tags[i]);
  160. /* re-write href of the new link */
  161. for (var j=0;j<snr_pattern.length;j++)
  162. {
  163. node.href = node.href.replace(snr_pattern[j].search,snr_pattern[j].replace);
  164. }
  165. }
  166. }
  167. for (var i=0;i<SITES.length;i++)
  168. {
  169. if (document.URL.match(SITES[i].url_snip))
  170. {
  171. var href_tags = find_tags(SITES[i].tag_name, SITES[i].href_pattern);
  172. if ( href_tags.length > 0 )
  173. {
  174. rewrite_href(href_tags, SITES[i].snr_pattern);
  175. }
  176. }
  177. }