Fix Skip YouTube Ads Bug in Brave

For personal use only.

目前为 2024-12-26 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Fix Skip YouTube Ads Bug in Brave
  3. // @namespace Violentmonkey Scripts
  4. // @match https://www.youtube.com/*
  5. // @version 0.0.001
  6. // @author -
  7. // @license MIT
  8. // @run-at document-start
  9. // @grant none
  10. // @unwrap
  11. // @allFrames true
  12. // @inject-into page
  13. // @description For personal use only.
  14. // ==/UserScript==
  15.  
  16.  
  17. (() => {
  18.  
  19. let cid = 0;
  20.  
  21. const [setInterval_, clearInterval_] = [setInterval, clearInterval];
  22.  
  23. let md1 = '';
  24. let md2 = 0;
  25. let qt = 0;
  26.  
  27. const timerFn = () => {
  28.  
  29. const mps = [...document.querySelectorAll('#movie_player')].filter(e => !e.closest('[hidden]'));
  30. if (mps.length !== 1) return;
  31.  
  32. const media = mps[0].querySelectorAll('audio, video');
  33. if (media.length !== 1) return;
  34. const md = media[0];
  35.  
  36.  
  37. if (Number.isFinite(md.currentTime) && md.currentTime < 0.0001 && md.duration > 5 && md.duration < qt + 5) {
  38. const t = `${md.currentTime}${md.duration}${md.src}`;
  39. if (md1 === t) md2++;
  40. else {
  41. md1 = t;
  42. md2 = 0;
  43. }
  44.  
  45. } else if (md2 > 0) {
  46. md1 = '';
  47. md2 = 0;
  48. }
  49.  
  50. if (md2 >= 3) {
  51. md.currentTime = md.duration;
  52. }
  53.  
  54. };
  55.  
  56. document.addEventListener('yt-page-data-fetched', (evt) => {
  57. const pageFetchedDataLocal = evt.detail;
  58. const m = pageFetchedDataLocal?.pageData?.playerResponse?.videoDetails?.lengthSeconds;
  59. if (m > 0) {
  60. cid && clearInterval_(cid);
  61. qt = m;
  62. cid = setInterval_(timerFn, 250);
  63. }
  64. }, false);
  65.  
  66. })();
  67.  
  68.