TryToLoadBigImageAutomatically

Automatically try to show big image instead of original preview.

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

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址