VIP图片查看

try to take over the world!

  1. // ==UserScript==
  2. // @name VIP图片查看
  3. // @namespace http://tampermonkey.net/
  4. // @version 2025-01-19
  5. // @description try to take over the world!
  6. // @author You
  7. // @match *://*.ootaotu.com/*
  8. // @match *://*.xstuji.com/*
  9. // @require https://lib.baomitu.com/jquery/2.2.4/jquery.min.js
  10. // @icon https://wx3.sinaimg.cn/orj360/00874gKJgy1hy0ac5vkzgj32s0460hdt.jpg
  11. // @grant none
  12. // @license MIT
  13. // ==/UserScript==
  14. (function () {
  15. 'VIP图片查看';
  16.  
  17. function appendImages() {
  18. const scotDiv = document.querySelector('.scot');
  19. if (scotDiv) {
  20. // 获取最后一个 a 元素
  21. const lastA = scotDiv.lastElementChild;
  22. const firstA = scotDiv.firstElementChild;
  23. if (firstA) {
  24. var lastImg = firstA.querySelector('img');
  25. if (lastImg) {
  26. var lastUrl = lastImg.src;
  27. // 提取图片 URL 中的数字部分
  28. console.log(lastUrl)
  29. const parts = lastUrl.match(/(\d+)\.jpg$/);
  30. if (parts && parts[1]) {
  31. scotDiv.innerHTML = '';
  32. var lastId = parseInt(parts[1]);
  33. //lastId = 1;
  34. const num = getTotalImageCount();
  35.  
  36. for (let i = 1; i <= num; i++) {
  37. const newId = lastId + i;
  38. // 生成新的图片 URL
  39. const newUrl = lastUrl.replace(/(\d+)\.jpg$/, newId + '.jpg');
  40. const newA = document.createElement('a');
  41. newA.href = newUrl;
  42. const newImg = document.createElement('img');
  43. newImg.classList.add('lazy');
  44. newImg.dataset.original = newUrl;
  45. newImg.src = newUrl;
  46. newImg.style.display = 'inline';
  47. newA.appendChild(newImg);
  48. scotDiv.appendChild(newA);
  49. }
  50. addLinkToSfnav(num + '张图片加载成功');
  51. } else {
  52. addLinkToSfnav('无法提取图片地址中的数字部分');
  53. }
  54. } else {
  55. addLinkToSfnav('未找到 img 元素');
  56. }
  57. } else {
  58. addLinkToSfnav('未找到 a 元素');
  59. }
  60. } else {
  61. addLinkToSfnav('未找到 div.scot 元素');
  62. }
  63. }
  64.  
  65. function checkIfLoaded() {
  66. const images = document.querySelectorAll('div.scot img');
  67. let allLoaded = true;
  68. for (let i = 0; i < images.length; i++) {
  69. if (!images[i].complete) {
  70. allLoaded = false;
  71. break;
  72. }
  73. }
  74. if (allLoaded) {
  75. appendImages();
  76. } else {
  77. // 继续检查
  78. setTimeout(checkIfLoaded, 100);
  79. }
  80. }
  81.  
  82. function addLinkToSfnav(msg) {
  83. const sfnavDiv = document.querySelector('.sfnav');
  84. if (sfnavDiv) {
  85. const newLink = document.createElement('a');
  86. newLink.href = "/#";
  87.  
  88. const icon = document.createElement('i');
  89. icon.classList.add('fa', 'fa-diamond');
  90. newLink.appendChild(icon);
  91.  
  92. const textNode = document.createTextNode(msg);
  93. newLink.appendChild(textNode);
  94.  
  95. sfnavDiv.appendChild(newLink);
  96. } else {
  97. console.error('未找到 div.sfnav 元素');
  98. }
  99. }
  100. function hidediv(classname){
  101. const cs = document.querySelector('.' + classname);
  102. if(cs){cs.style.display = 'none';}
  103. }
  104. function getTotalImageCount() {
  105. const spDiv = document.querySelector('.sp');
  106. if (spDiv) {
  107. spDiv.style.display = 'none';
  108. const iElements = spDiv.querySelectorAll('.i1');
  109. if (iElements.length > 0) {
  110. const firstIElement = iElements[0];
  111. const text = firstIElement.textContent.trim();
  112. const number = parseInt(text);
  113. if (!isNaN(number)) {
  114. console.log('全本完整作品的图片总数:', number);
  115. return number;
  116. }
  117. }
  118. }
  119. console.error('未找到包含图片数量的元素或数字解析失败');
  120. return null;
  121. }
  122. hidediv('gaoliang');
  123.  
  124.  
  125. window.onload = function () {
  126. checkIfLoaded();
  127. hidediv('gaoliang');
  128. //getTotalImageCount();
  129. //addLinkToSfnav();
  130. };
  131.  
  132. })();