Greasy Fork镜像 支持简体中文。

動畫瘋自動播放

現在可以24小時孤獨搖滾了

  1. // ==UserScript==
  2. // @name 動畫瘋自動播放
  3. // @namespace https://itiscaleb.com
  4. // @version 1.4
  5. // @description 現在可以24小時孤獨搖滾了
  6. // @authpr ItisCaleb
  7. // @match https://ani.gamer.com.tw/animeVideo.php*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12.  
  13. var episodeList;
  14. var currentEpisode;
  15. var interval;
  16. var time;
  17.  
  18. (function(){
  19. 'use strict'
  20. let item = window.localStorage.getItem("play");
  21. let playEnabled = item==="true";
  22. styleInject();
  23. buttonInject(playEnabled);
  24. [episodeList,currentEpisode] = getEpisodes();
  25. time = Date.now();
  26. autoStart(playEnabled);
  27. })()
  28.  
  29. function autoStart(enabled){
  30. if(!enabled) return;
  31. interval = setInterval(()=>{
  32. let adultCheck = document.getElementById("adult");
  33. if(adultCheck){
  34. adultCheck.click();
  35. clearInterval(interval);
  36. skipAd(enabled);
  37. nextEpisode(enabled);
  38. }
  39. },1000);
  40. }
  41. function skipAd(enabled){
  42. if(!enabled) return;
  43. let inter = setInterval(()=>{
  44. let skipButton = document.getElementById('adSkipButton');
  45. if(skipButton&&skipButton.classList.contains('enabled')){
  46. clearInterval(inter);
  47. skipButton.click();
  48. }
  49. });
  50. }
  51.  
  52. function nextEpisode(enabled){
  53. if (!enabled) return;
  54. interval = setInterval(()=>{
  55. let episodeEnd = document.getElementsByClassName('stop')[0];
  56. if(!episodeEnd.classList.contains('vjs-hidden')){
  57. let nexted = window.localStorage.getItem("nexted");
  58. if(nexted==="true" && Date.now()-time<1000*60){
  59. let replay = document.getElementsByClassName('replay')[0]
  60. replay.children[0].click();
  61. window.localStorage.setItem("nexted",false);
  62. }else{
  63. let episodeTotal = episodeList.length;
  64. episodeList[currentEpisode%episodeTotal].children[0].click();
  65. window.localStorage.setItem("nexted",true);
  66. }
  67. }
  68. },1000);
  69. }
  70.  
  71. function getEpisodes(){
  72. let episodeList = document.getElementsByClassName('season')[0].children[0].children;
  73. let current = 1;
  74. for(let i=0;i<episodeList.length;i++){
  75. if(episodeList[i].classList.contains('playing')) current=i+1;
  76. }
  77. return [episodeList,current];
  78. }
  79.  
  80. function buttonInject(enabled){
  81. let section = document.getElementsByClassName('videoname')[0];
  82. let div = document.createElement('div');
  83. div.style="margin: 10px;width:20%";
  84. section.appendChild(div);
  85. div.innerHTML=`
  86. <label class="switch" style="float:left" >
  87. <input id="autoplay" type="checkbox" ${enabled?"checked":""}>
  88. <span class="slider"></span>
  89. </label>
  90. <span style="font-size:18px;float:right;margin-top:3.5px">自動播放</span>`;
  91. let autoplay = document.getElementById("autoplay");
  92. autoplay.addEventListener('click',()=>playButton(autoplay));
  93. }
  94. function playButton(box){
  95. window.localStorage.setItem('play',box.checked);
  96. if(!box.checked){
  97. clearInterval(interval);
  98. }else{
  99. let adultCheck = document.getElementById("adult");
  100. if(adultCheck) autoStart(box.checked);
  101. else nextEpisode(box.checked);
  102. }
  103. }
  104.  
  105. function styleInject(){
  106. let style = document.createElement('style');
  107. style.textContent = `
  108. .switch {
  109. position: relative;
  110. display: inline-block;
  111. width: 50px;
  112. height: 24px;
  113. }
  114. .switch input {
  115. opacity: 0;
  116. width: 0;
  117. height: 0;
  118. }
  119. .slider {
  120. position: absolute;
  121. cursor: pointer;
  122. top: 0;
  123. left: 0;
  124. right: 0;
  125. bottom: 0;
  126. background-color: #ccc;
  127. -webkit-transition: .4s;
  128. transition: .4s;
  129. border-radius: 34px;
  130. }
  131. .slider:before {
  132. position: absolute;
  133. content: "";
  134. height: 20px;
  135. width: 20px;
  136. left: 2px;
  137. top: 2px;
  138. background-color: white;
  139. -webkit-transition: .4s;
  140. transition: .4s;
  141. border-radius: 50%;
  142. }
  143. input:checked + .slider {
  144. background-color: #00b4d8;
  145. }
  146. input:checked + .slider:before {
  147. -webkit-transform: translateX(26px);
  148. -ms-transform: translateX(26px);
  149. transform: translateX(26px);
  150. }
  151. `;
  152. document.head.appendChild(style);
  153. }

QingJ © 2025

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