Greasy Fork

爱奇艺广告屏蔽

该插件原理是监听视频加载,默认会跳过时间少于 150s 的视频,有需要可以自己改,但是并不能完全消除,广告视频可能还是会播放1-2s;并且移除了暂停时的广告

// ==UserScript==
// @name         爱奇艺广告屏蔽
// @namespace    http://tampermonkey.net/
// @version      2024-11-19
// @description  该插件原理是监听视频加载,默认会跳过时间少于 150s 的视频,有需要可以自己改,但是并不能完全消除,广告视频可能还是会播放1-2s;并且移除了暂停时的广告
// @author       You
// @match        https://www.iqiyi.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=iqiyi.com
// @grant        none
// ==/UserScript==

(function() {
   'use strict';
    // 最小视频时长
    const MinVideoTime = 150
   const classContent = `
  #\\35 fcma2g3wzdcvv2smpk4d3h3vq > iqpdiv > iqpdiv.iqp-player > iqpdiv.iqp-player-videolayer {
width: 100% !important;
height: 100% !important;
left:0 !important;
top: 0 !important;
  }

  #\\35 fcma2g3wzdcvv2smpk4d3h3vq > iqpdiv > iqpdiv.iqp-player > iqpdiv.flash-max1 > iqpdiv.pause-max-video-mask {
   left:auto !important;
   top: auto !important;
  }

  #\\35 fcma2g3wzdcvv2smpk4d3h3vq > iqpdiv > iqpdiv.iqp-player > iqpdiv.flash-max1 > :not(.pause-max-video-mask) {
display: none;
  }
  `
  const styleDom = document.createElement('style')
  styleDom.innerText = classContent

   const advFlag = () => document.querySelector("#\\35 fcma2g3wzdcvv2smpk4d3h3vq > iqpdiv > iqpdiv.iqp-player > iqpdiv.iqp-player-videolayer > iqpdiv > iqpdiv.post-container > iqpdiv.mid-detail")
  const videoDom = () => document.querySelector("#\\35 fcma2g3wzdcvv2smpk4d3h3vq > iqpdiv > iqpdiv.iqp-player > iqpdiv.iqp-player-videolayer > iqpdiv > video")

  const callback = function (mutationsList, observer) {
   for (let mutation of mutationsList) {
     if (mutation.type === "childList") {
      //  console.log("A child node has been added or removed.");
     } else if (mutation.type === "attributes" && mutation.attributeName === 'src') {
         setTimeout(() => {

             const duration = videoDom().duration
            if(duration < 300) {
               videoDom().currentTime = duration
            }
         }, 300);
     }
   }
 };

    function checkVideo() {
      // setTimeout(() => {
       const duration = videoDom().duration
       console.log(duration)
        if(duration < MinVideoTime) {
           // videoDom().currentTime = duration
        }
       //}, 200)
    }

document.querySelector('head').appendChild(styleDom)
      const video = videoDom();
      checkVideo()
      video.addEventListener('canplaythrough', checkVideo)

  // Your code here...
  })();