TryToLoadBigImageAutomatically

Automatically try to show big image instead of original preview.

目前为 2017-02-19 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name TryToLoadBigImageAutomatically
  3. // @namespace mnts
  4. // @description Automatically try to show big image instead of original preview.
  5. // @include http://anime-pictures.net?*
  6. // @include *://*anime-pictures.*/*
  7. // @include http?://anime.reactor.cc/tag/?*
  8. // @include *://*anime.reactor.*/tag/*
  9. // @include http?://zerochan.net/?*
  10. // @include *://*zerochan.*/*
  11. // @include http?://otakumode.com/?*/post/?*
  12. // @include *://*otakumode.*/*/post/*
  13. // @include http?://?*.?*/?*
  14. // @include *://*.*/*
  15. // @version 1.3
  16. // @grant none
  17. // ==/UserScript==
  18.  
  19. function tryAnimePictures()
  20. { //anime-pictures.net
  21. var asPreview = document.getElementById('big_preview_cont');
  22. if (asPreview === undefined || asPreview === null) return false;
  23. var aPreview = asPreview.getElementsByTagName('a')[0];
  24. if (aPreview === undefined || asPreview === null) return false;
  25. var bigImgUrl = aPreview.getAttribute('href');
  26. if (bigImgUrl !== undefined && bigImgUrl !== "") {
  27. var imgPreview = aPreview.getElementsByTagName('img')[0];
  28. if (imgPreview === undefined || imgPreview === null) return false;
  29. imgPreview.setAttribute('width', imgPreview.width);
  30. imgPreview.setAttribute('src', '');
  31. imgPreview.setAttribute('src', bigImgUrl);
  32. }
  33. return true;
  34. }
  35.  
  36. function tryAnimeReactorCC()
  37. { //anime.reactor.cc
  38. var asPreview = document.getElementsByClassName('prettyPhotoLink');
  39. var result = false;
  40. for (var i = 0; i < asPreview.length; i++) {
  41. result = true;
  42. var a = asPreview[i];
  43. var urlBigImg = a.getAttribute('href');
  44. var img = a.getElementsByTagName('img')[0];
  45. img.setAttribute('src', '');
  46. img.setAttribute('src', urlBigImg);
  47. }
  48. return result;
  49. }
  50.  
  51. function tryZerochan()
  52. { //zerochan.net
  53. var divPreview = document.getElementById('large');
  54. if (divPreview === undefined || divPreview === null) return false;
  55. var aPreview = divPreview.getElementsByTagName('a')[0];
  56. if (aPreview === undefined || aPreview === null) return false;
  57. var imgPreview = aPreview.getElementsByTagName('img')[0];
  58. if (imgPreview === undefined || imgPreview === null) return false;
  59. var urlFull = aPreview.getAttribute('href');
  60. if (urlFull.length <= 0) return false;
  61. imgPreview.setAttribute('src', '');
  62. imgPreview.setAttribute('src', urlFull);
  63. return true;
  64. }
  65.  
  66. function tryOtakumode()
  67. { //otakumode.com
  68. var className = 'first nomenu nodraggable';
  69. var imgsPreview = document.getElementsByClassName(className);
  70. if (imgsPreview === undefined || imgsPreview === null) return false;
  71.  
  72. var countPreview = 0;
  73. var divContents = document.getElementById('contents');
  74. if (divContents === undefined || divContents === null) return false;
  75.  
  76. divContents.addEventListener('DOMSubtreeModified', function() {
  77. var imgsPreview = document.getElementsByClassName(className);
  78. if (imgsPreview === undefined || imgsPreview === null) return;
  79. if (countPreview === imgsPreview.length) return;
  80. countPreview = imgsPreview.length;
  81.  
  82. var exprPass = ".*x\.jpg$";
  83. for (var i = 0; i < imgsPreview.length; i++) {
  84. var imgPreview = imgsPreview[i];
  85. var urlImage = imgPreview.getAttribute('src');
  86. if (urlImage.match(exprPass) === null) {
  87. var ext = '.jpg';
  88. var urlImageBig = urlImage.substring(0, urlImage.length - ext.length) + 'x' + urlImage.substring(urlImage.length - ext.length);
  89. imgPreview.setAttribute('src', '');
  90. imgPreview.setAttribute('src', urlImageBig);
  91. }
  92. }
  93. });
  94.  
  95. return true;
  96. }
  97.  
  98. function allHrefToSrc()
  99. {
  100. console.log('window.onload');
  101. var imgs = document.getElementsByTagName('img');
  102. var expr = '.*\.(jpg|jpeg|png)$';
  103.  
  104. for (var i = 0; i < imgs.length; i++) {
  105. var img = imgs[i];
  106. var nodeParent = img.parentNode;
  107. if (nodeParent.tagName !== 'A') continue;
  108.  
  109. var src = img.getAttribute('src');
  110. var href = nodeParent.getAttribute('href');
  111. if (src === href) continue;
  112.  
  113. if (href.match(expr) !== null) {
  114. img.setAttribute('src', '');
  115. img.setAttribute('src', href);
  116. }
  117. }
  118. }
  119.  
  120. function tryCommon()
  121. { //*.*
  122. var body = document.getElementsByTagName('body')[0];
  123. if (body === undefined || body == null) return false;
  124.  
  125. var countImg = 0;
  126. window.onload = function() {
  127. allHrefToSrc();
  128. };
  129. body.addEventListener('DOMSubtreeModified', function() {
  130. var imgs = document.getElementsByTagName('img');
  131. if (countImg === imgs.length) return;
  132. countImg = imgs.length;
  133.  
  134. console.log('DOMSubtreeModified');
  135. allHrefToSrc();
  136. });
  137. return true;
  138. }
  139.  
  140. if (tryAnimePictures()) {
  141. console.log('type: anime-pictures.net');
  142. } else if (tryAnimeReactorCC()) {
  143. console.log('type: anime.reactor.cc');
  144. } else if (tryZerochan()) {
  145. console.log('type: zerochan.net');
  146. } else if (tryOtakumode()) {
  147. console.log('type: otakumode.com');
  148. } else {
  149. console.log('type: http?://.*\..*/.*');
  150. tryCommon();
  151. }