红狐弹幕解析+自动播放

红狐自动播放和弹幕解析整合版

目前为 2025-01-31 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name 红狐弹幕解析+自动播放
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description 红狐自动播放和弹幕解析整合版
  6. // @author Aomine
  7. // @match *.rdfplayer.mrgaocloud.com/*
  8. // @match *:rdfplayer.mrgaocloud.com/player/*
  9. // @match *v.qq.com/x*
  10. // @match *v.qq.com/p*
  11. // @match *v.qq.com/cover*
  12. // @match *v.qq.com/tv/*
  13. // @match *.youku.com/v*
  14. // @match *m.youku.com/*
  15. // @match *.iqiyi.com/v_*
  16. // @match *.iqiyi.com/w_*
  17. // @match *.iqiyi.com/a_*
  18. // @match *.iq.com/play/*
  19. // @match *.bilibili.com/video/*
  20. // @match *.bilibili.com/anime/*
  21. // @match *.bilibili.com/bangumi/play/*
  22. // @match *.bilibili.com/s/*
  23. // @match *.pptv.com/show/*
  24. // @match *.acfun.cn/*
  25. // @license GPL License
  26. // @icon data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PgoNPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCA5MSA5MSIgaWQ9IkxheWVyXzEiIHZlcnNpb249IjEuMSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cg08c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDojNEU3QTlFO30NCgkuc3Qxe2ZpbGw6I0YwQURBQjt9DQo8L3N0eWxlPgoNPGc+Cg08Zz4KDTxnPgoNPHBhdGggY2xhc3M9InN0MCIgZD0iTTU1LjQsNTMuNmMyLjEtMi4xLDMuMi00LjgsMS43LThjLTIuMy00LjctMTAuMy01LjUtMTMuMy0xLjNjLTAuNiwwLjgsMC4xLDEuOCwwLjgsMi4xICAgICBjMi4zLDAuOCw1LjMtMSw3LjQsMC40YzMuNiwyLjMtMC44LDUuMi0zLjIsNS45Yy0yLjcsMC44LTEuNiw0LjksMS4yLDQuMmMzLjctMC45LDYuMSwyLjgsNC40LDZjLTEuNywzLTUuMywzLjItOCwxLjcgICAgIGMtMy43LTItOC4xLDMuMS00LjYsNmMyLjgsMi40LDcuNiwxLjcsMTAuOCwwLjNjMy4xLTEuNCw1LjctNCw2LjYtNy40QzYwLjEsNTkuNiw1OC40LDU1LjYsNTUuNCw1My42eiIvPgoNPHBhdGggY2xhc3M9InN0MCIgZD0iTTMzLjIsMjAuOWMtMi44LDEuNS01LjEsMy45LTcuMSw2LjRjLTIuNC0zLjEtNS42LTYuMi05LjMtNi4zYy0xLjcsMC0yLjUsMi4xLTEuMywzLjJjMi45LDMsNiw1LjMsOC4zLDguOSAgICAgYzEuMSwxLjgsMy40LDEuNiw0LjYsMGMyLjMtMy4xLDUuMy01LjMsOC4zLTcuOEMzOS4xLDIzLjIsMzUuOSwxOS40LDMzLjIsMjAuOXoiLz4KDTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik03MS45LDIxLjdjLTIuOCwxLjUtNS4xLDMuOS03LjEsNi40Yy0yLjQtMy4xLTUuNi02LjItOS4zLTYuM2MtMS43LDAtMi41LDIuMS0xLjMsMy4yYzIuOSwzLDYsNS4zLDguMyw4LjkgICAgIGMxLjEsMS44LDMuNCwxLjYsNC42LDBjMi4zLTMuMSw1LjMtNS4zLDguMy03LjhDNzcuOSwyNCw3NC43LDIwLjIsNzEuOSwyMS43eiIvPgoNPC9nPgoNPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwLjQsNTIuMWMxLjQtMS40LDIuOC0yLjcsNC4yLTQuMWMxLjQtMS40LDMuNC0yLjcsMy40LTQuOGMwLTEuMi0xLTIuMi0yLjItMi4yYy0yLjMsMC4xLTMuNSwyLjItNC44LDMuOCAgICBjLTEuMiwxLjYtMi4yLDMuNS0zLjIsNS4zQzcuMSw1MS43LDkuMSw1My41LDEwLjQsNTIuMUwxMC40LDUyLjF6Ii8+Cg08cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjEuMiw1Mi44YzEuNC0xLjEsMi44LTIuMiw0LjItMy4zYzEuMy0xLjEsMy4xLTIuMiwzLjgtMy44YzEtMi4yLTEuMS00LjktMy41LTMuNWMtMS43LDAuOS0yLjYsMi45LTMuNiw0LjQgICAgYy0xLDEuNS0yLDMuMS0yLjksNC43QzE4LjMsNTIuNSwyMC4xLDUzLjYsMjEuMiw1Mi44TDIxLjIsNTIuOHoiLz4KDTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02NS42LDUyLjFjMS40LTEuNCwyLjgtMi43LDQuMi00LjFjMS40LTEuNCwzLjQtMi43LDMuNC00LjhjMC0xLjItMS0yLjItMi4yLTIuMmMtMi4zLDAuMS0zLjUsMi4yLTQuOCwzLjggICAgYy0xLjIsMS42LTIuMiwzLjUtMy4yLDUuM0M2Mi4zLDUxLjcsNjQuMyw1My41LDY1LjYsNTIuMUw2NS42LDUyLjF6Ii8+Cg08cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzYuNCw1Mi44YzEuNC0xLjEsMi44LTIuMiw0LjItMy4zYzEuMy0xLjEsMy4xLTIuMiwzLjgtMy44YzEtMi4yLTEuMS00LjktMy41LTMuNWMtMS43LDAuOS0yLjYsMi45LTMuNiw0LjQgICAgYy0xLDEuNS0yLDMuMS0yLjksNC43QzczLjUsNTIuNSw3NS4zLDUzLjYsNzYuNCw1Mi44TDc2LjQsNTIuOHoiLz4KDTwvZz4KDTwvZz4KDTwvc3ZnPg==
  27. // @grant none
  28. // ==/UserScript==
  29.  
  30. (function() {
  31. 'use strict';
  32.  
  33. // 弹幕解析功能(第一个脚本内容)
  34. var am = false;
  35. var moving = false;
  36. var logo = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PgoNPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCA5MSA5MSIgaWQ9IkxheWVyXzEiIHZlcnNpb249IjEuMSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cg08c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDojNEU3QTlFO30NCgkuc3Qxe2ZpbGw6I0YwQURBQjt9DQo8L3N0eWxlPgoNPGc+Cg08Zz4KDTxnPgoNPHBhdGggY2xhc3M9InN0MCIgZD0iTTU1LjQsNTMuNmMyLjEtMi4xLDMuMi00LjgsMS43LThjLTIuMy00LjctMTAuMy01LjUtMTMuMy0xLjNjLTAuNiwwLjgsMC4xLDEuOCwwLjgsMi4xICAgICBjMi4zLDAuOCw1LjMtMSw3LjQsMC40YzMuNiwyLjMtMC44LDUuMi0zLjIsNS45Yy0yLjcsMC44LTEuNiw0LjksMS4yLDQuMmMzLjctMC45LDYuMSwyLjgsNC40LDZjLTEuNywzLTUuMywzLjItOCwxLjcgICAgIGMtMy43LTItOC4xLDMuMS00LjYsNmMyLjgsMi40LDcuNiwxLjcsMTAuOCwwLjNjMy4xLTEuNCw1LjctNCw2LjYtNy40QzYwLjEsNTkuNiw1OC40LDU1LjYsNTUuNCw1My42eiIvPgoNPHBhdGggY2xhc3M9InN0MCIgZD0iTTMzLjIsMjAuOWMtMi44LDEuNS01LjEsMy45LTcuMSw2LjRjLTIuNC0zLjEtNS42LTYuMi05LjMtNi4zYy0xLjcsMC0yLjUsMi4xLTEuMywzLjJjMi45LDMsNiw1LjMsOC4zLDguOSAgICAgYzEuMSwxLjgsMy40LDEuNiw0LjYsMGMyLjMtMy4xLDUuMy01LjMsOC4zLTcuOEMzOS4xLDIzLjIsMzUuOSwxOS40LDMzLjIsMjAuOXoiLz4KDTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik03MS45LDIxLjdjLTIuOCwxLjUtNS4xLDMuOS03LjEsNi40Yy0yLjQtMy4xLTUuNi02LjItOS4zLTYuM2MtMS43LDAtMi41LDIuMS0xLjMsMy4yYzIuOSwzLDYsNS4zLDguMyw4LjkgICAgIGMxLjEsMS44LDMuNCwxLjYsNC42LDBjMi4zLTMuMSw1LjMtNS4zLDguMy03LjhDNzcuOSwyNCw3NC43LDIwLjIsNzEuOSwyMS43eiIvPgoNPC9nPgoNPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwLjQsNTIuMWMxLjQtMS40LDIuOC0yLjcsNC4yLTQuMWMxLjQtMS40LDMuNC0yLjcsMy40LTQuOGMwLTEuMi0xLTIuMi0yLjItMi4yYy0yLjMsMC4xLTMuNSwyLjItNC44LDMuOCAgICBjLTEuMiwxLjYtMi4yLDMuNS0zLjIsNS4zQzcuMSw1MS43LDkuMSw1My41LDEwLjQsNTIuMUwxMC40LDUyLjF6Ii8+Cg08cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjEuMiw1Mi44YzEuNC0xLjEsMi44LTIuMiw0LjItMy4zYzEuMy0xLjEsMy4xLTIuMiwzLjgtMy44YzEtMi4yLTEuMS00LjktMy41LTMuNWMtMS43LDAuOS0yLjYsMi45LTMuNiw0LjQgICAgYy0xLDEuNS0yLDMuMS0yLjksNC43QzE4LjMsNTIuNSwyMC4xLDUzLjYsMjEuMiw1Mi44TDIxLjIsNTIuOHoiLz4KDTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02NS42LDUyLjFjMS40LTEuNCwyLjgtMi43LDQuMi00LjFjMS40LTEuNCwzLjQtMi43LDMuNC00LjhjMC0xLjItMS0yLjItMi4yLTIuMmMtMi4zLDAuMS0zLjUsMi4yLTQuOCwzLjggICAgYy0xLjIsMS42LTIuMiwzLjUtMy4yLDUuM0M2Mi4zLDUxLjcsNjQuMyw1My41LDY1LjYsNTIuMUw2NS42LDUyLjF6Ii8+Cg08cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzYuNCw1Mi44YzEuNC0xLjEsMi44LTIuMiw0LjItMy4zYzEuMy0xLjEsMy4xLTIuMiwzLjgtMy44YzEtMi4yLTEuMS00LjktMy41LTMuNWMtMS43LDAuOS0yLjYsMi45LTMuNiw0LjQgICAgYy0xLDEuNS0yLDMuMS0yLjksNC43QzczLjUsNTIuNSw3NS4zLDUzLjYsNzYuNCw1Mi44TDc2LjQsNTIuOHoiLz4KDTwvZz4KDTwvZz4KDTwvc3ZnPg==";;
  37.  
  38. // 如果当前网址是 https://rdfplayer.mrgaocloud.com/,不创建图标
  39. if (window.location.hostname !== 'rdfplayer.mrgaocloud.com') {
  40. // 拖拽功能
  41. var startDrag = function(target) {
  42. var getCss = function(o, key) {
  43. return o.currentStyle ? o.currentStyle[key] : document.defaultView.getComputedStyle(o, false)[key];
  44. };
  45. var params = { left: 0, top: 0, currentX: 0, currentY: 0, rectLeft: 0, rectTop: 0, rectRight: 0 };
  46. if (getCss(target, "position") === "static") {
  47. target.style.position = "relative";
  48. }
  49. if (getCss(target, "left") !== "auto") {
  50. params.left = getCss(target, "left");
  51. }
  52. if (getCss(target, "top") !== "auto") {
  53. params.top = getCss(target, "top");
  54. }
  55. target.addEventListener("mousedown", function(event) {
  56. moving = true;
  57. params.rectLeft = target.getBoundingClientRect().left + document.body.scrollLeft;
  58. params.rectTop = target.getBoundingClientRect().top + document.body.scrollTop;
  59. params.rectRight = document.documentElement.clientWidth - target.getBoundingClientRect().right;
  60. if (event.preventDefault) {
  61. event.preventDefault();
  62. } else {
  63. event.returnValue = false;
  64. }
  65. var e = event;
  66. params.currentX = e.clientX;
  67. params.currentY = e.clientY;
  68. document.addEventListener("mousemove", function(event) {
  69. if (moving == false) {
  70. return 0;
  71. }
  72. am = true;
  73. var e = event ? event : window.event;
  74. var nowX = e.clientX,
  75. nowY = e.clientY;
  76. var disX = nowX - params.currentX,
  77. disY = nowY - params.currentY;
  78. if (disX < 0 && Math.abs(disX) > params.rectLeft) {
  79. disX = -params.rectLeft;
  80. }
  81. if (disY < 0 && Math.abs(disY) > params.rectTop) {
  82. disY = -params.rectTop;
  83. }
  84. if (disX > 0 && disX > params.rectRight) {
  85. disX = params.rectRight;
  86. }
  87. target.style.left = parseInt(params.left) + disX + "px";
  88. target.style.top = parseInt(params.top) + disY + "px";
  89. });
  90.  
  91. document.addEventListener("mouseup", function() {
  92. moving = false;
  93. setTimeout(function() { am = false; }, 50);
  94. if (getCss(target, "left") !== "auto") {
  95. params.left = getCss(target, "left");
  96. }
  97. if (getCss(target, "top") !== "auto") {
  98. params.top = getCss(target, "top");
  99. }
  100. });
  101. });
  102. };
  103.  
  104. // 创建图标
  105. var ele = document.createElement("img");
  106. ele.id = "imgid";
  107. ele.style = "margin: 250px 0px 0px 10px;width:60px;position: fixed;top:0px;z-index: 99999;";
  108. ele.src = logo;
  109. document.body.appendChild(ele);
  110. startDrag(document.getElementById('imgid'));
  111.  
  112. // 点击事件:跳转解析站并传递B站地址
  113. document.getElementById("imgid").addEventListener("click", function(e) {
  114. if (am == false) {
  115. var videoUrl = encodeURIComponent(window.location.href);
  116. var targetUrl = `https://rdfplayer.mrgaocloud.com/?url=${videoUrl}`;
  117.  
  118. // 直接打开带URL参数的解析站
  119. window.open(targetUrl, "_blank");
  120. }
  121. });
  122. }
  123.  
  124. // 自动播放功能(第二个脚本内容)
  125. let hasPlayed = false;
  126. const iframe = document.getElementById("RDFPLAYER_VOD_IFRAME");
  127. if (!iframe) {
  128. console.error("Iframe not found!");
  129. return;
  130. }
  131.  
  132. function handleIframeLoad() {
  133. if (hasPlayed) return;
  134. hasPlayed = true;
  135.  
  136. setTimeout(function() {
  137. const playButton = document.getElementById("ssdi");
  138. if (playButton) {
  139. playButton.click();
  140. } else {
  141. console.error("Play button not found!");
  142. }
  143.  
  144. const message = { action: "play" };
  145. iframe.contentWindow.postMessage(message, "*");
  146.  
  147. enterFullscreen();
  148. }, 3000);
  149. }
  150.  
  151. iframe.onload = handleIframeLoad;
  152. let previousSrc = iframe.src;
  153. const observer = new MutationObserver(function(mutations) {
  154. mutations.forEach(function(mutation) {
  155. if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
  156. previousSrc = iframe.src;
  157. iframe.onload = handleIframeLoad;
  158. }
  159. });
  160. });
  161. observer.observe(iframe, { attributes: true });
  162.  
  163. if (!iframe.src || iframe.src === "https://rdfplayer.mrgaocloud.com/player/?url=") {
  164. iframe.src = "https://rdfplayer.mrgaocloud.com/player/?url=VALID_VIDEO_URL";
  165. }
  166.  
  167. function enterFullscreen() {
  168. if (iframe.requestFullscreen) {
  169. iframe.requestFullscreen();
  170. } else if (iframe.mozRequestFullScreen) {
  171. iframe.mozRequestFullScreen();
  172. } else if (iframe.webkitRequestFullscreen) {
  173. iframe.webkitRequestFullscreen();
  174. } else if (iframe.msRequestFullscreen) {
  175. iframe.msRequestFullscreen();
  176. } else {
  177. console.error("Fullscreen API is not supported.");
  178. }
  179. }
  180.  
  181. })();

QingJ © 2025

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