Greasy Fork

Greasy Fork is available in English.

抖音直播自动原画以及网页全屏

抖音直播间开启自动原画以及网页全屏

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         抖音直播自动原画以及网页全屏
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  抖音直播间开启自动原画以及网页全屏
// @author       You
// @match        https://live.douyin.com/*
// @icon         https://live.douyin.com/favicon.ico
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function () {
    "use strict";

    // Your code here...
    // 定义第一个函数
function waitForElement(node, interval = 10, maxAttempts = 1000) {
  let attempts = 0;
  let timerId;

  function checkElement() {
    node=document.querySelector(
            '[data-e2e="quality-selector"]'
        );
    if (attempts >= maxAttempts) {
      console.error("Reached maximum number of attempts. Element not found.");
      clearTimeout(timerId); // 清除计时器
      return;
    }

    if (node === undefined || node === null) {
      console.error('Element not found');
      attempts++;
      timerId = setTimeout(checkElement, interval); // 设置下一次检查
    } else {
      console.log('Element found');
      clearTimeout(timerId); // 清除计时器
      // 在这里可以执行您想要的操作,因为节点已经找到
    }
  }

  checkElement();
}
    function function1() {
        // 切换原画
        // 找到具有 data-e2e=quality-selector 属性的 div 元素
        const qualitySelectorDiv = document.querySelector(
            '[data-e2e="quality-selector"]'
        );
        waitForElement(qualitySelectorDiv);
        if (qualitySelectorDiv) {
            // 找到第一个孩子元素并模拟点击
            const firstChildElement = qualitySelectorDiv.firstElementChild;

            if (firstChildElement) {
                // 创建一个点击事件
                const clickEvent = new MouseEvent("click", {
                    bubbles: true,
                    cancelable: true,
                    view: window,
                });

                // 触发点击事件
                firstChildElement.dispatchEvent(clickEvent);
            }
        }
    }

    // 定义第二个函数
    function function2() {
        // 网页全屏
        // 找到所有包含"网页全屏"文本的 div 元素
        const divElements = document.querySelectorAll("div");

        // 遍历所有 div 元素,查找匹配的文本的兄弟节点并点击
        divElements.forEach((divElement) => {
            if (divElement.innerText === "网页全屏") {
                // 找到兄弟节点
                const siblingElement = divElement.nextElementSibling;

                if (siblingElement) {
                    // 创建一个点击事件
                    const clickEvent = new MouseEvent("click", {
                        bubbles: true,
                        cancelable: true,
                        view: window,
                    });

                    // 触发点击事件
                    siblingElement.dispatchEvent(clickEvent);
                }
            }
        });
    }

        function1();
        function2();
})();