抖音自觉助手

过滤广告、直播、超4分钟的视频【注意:第一次请求的视频无法过滤,因为第一次请求比脚本加载还要快。

目前為 2024-05-04 提交的版本,檢視 最新版本

// ==UserScript==
// @name         抖音自觉助手
// @namespace    https://gitee.com/yc556/dy-oil-monkey-filter-video
// @version      2024-05-04
// @description  过滤广告、直播、超4分钟的视频【注意:第一次请求的视频无法过滤,因为第一次请求比脚本加载还要快。
// @author       仰晨
// @match        *://*.douyin.com/*
// @icon         https://7.z.wiki/autoupload/20240504/t0lK.1006X1006-Snipaste_2024-05-04_21-14-39.png
// @grant        none
// @license      AGPL License
// ==/UserScript==

(function () {
  'use strict';
  console.log('████成功启动█████');

  function setupHook(xhr) {
    function getter() {
      delete xhr.responseText;  // 不delete将造成递归
      let res = xhr.responseText;
      // 是视频列表获取请求
      if (xhr.responseURL.includes('aweme/v1/web/tab/feed')) {

        let respJson = JSON.parse(xhr.response)
        console.log('█████████get responseText', respJson);
        const accordWithVideoList = []
        // 遍历拿到的视频列表 进行处理
        for (let i = 0; i < respJson.aweme_list.length; i++) {
          // 广告和直播都有 respJson.aweme_list[i].preview_video_status === 1
          const isVideo = respJson.aweme_list[i].video              // 是否视频
          const haveTag = respJson.aweme_list[i].video_tag              // 视频标签 有标签才是正常视频
          //const noCellRoom = !respJson.aweme_list[i].cell_room // 直播才有这个属性?
          const noOutTime = isVideo?.duration < 1000 * 60 * 4 // 视频不超4分钟
          const noAvatarLarger = !respJson.aweme_list[i].author?.avatar_larger  // 正常视频没有这个属性

          if (isVideo && haveTag && noOutTime && noAvatarLarger) {
            accordWithVideoList.push(respJson.aweme_list[i])
          }
        }
        respJson.aweme_list = accordWithVideoList  // 替换 过滤后的视频列表
        res = JSON.stringify(respJson)
      }
      setup();
      return res;
    }

    function setter(str) {
      console.log('set response: %s', str);
    }

    function setup() {
      Object.defineProperty(xhr, 'responseText', {
        get: getter,
        set: setter,
        configurable: true
      });
    }

    setup();
  }

  const oldOpen = XMLHttpRequest.prototype.open;
  XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
    if (!this._hooked) {
      this._hooked = true;
      setupHook(this);
    }
    if (url.includes('aweme/v1/web/tab/feed') && window.ikunCount > 300) return console.log('███████>>>>够钟<<<<██████')
    oldOpen.apply(this, arguments);
  }


  /**
   * 增加计时器
   *
   * @author Yc
   * @since 2024/5/4 20:55
   */
  window.ikunCount = 0; // 初始化计数器
  setInterval(()=>{
    if (document.visibilityState === 'visible') window.ikunCount++;
  }, 1000);

})();

QingJ © 2025

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