Greasy Fork

Greasy Fork is available in English.

纯净版斗鱼(douyu)

斗鱼(douyu.com)纯净版,只保留直播和弹幕

目前为 2025-05-17 提交的版本,查看 最新版本

// ==UserScript==
// @name         纯净版斗鱼(douyu)
// @namespace    https://github.com/ljezio
// @version      1.4
// @description  斗鱼(douyu.com)纯净版,只保留直播和弹幕
// @homepage     https://github.com/ljezio/pure-douyu
// @author       ljezio
// @license      MIT
// @match        https://www.douyu.com/*
// @icon         https://www.douyu.com/favicon.ico
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const player = document.querySelector('.layout-Player');
    const root = document.querySelector('#root') ||
        document.querySelector('section[class="layout-Container"]');
    if (!root || !player) return;
    dbClick(player);
    removeNude(root, player);
    clearPayer(player);

    /**
     * 双击全屏
     */
    function dbClick(player) {
        player.ondblclick = () => {
            if (!document.fullscreenElement) {
                document.querySelector('div[title="全屏"]')?.click();
            } else {
                document.exitFullscreen().then();
            }
        }
    }

    /**
     * 隐藏无用元素
     */
    function removeNude(root, player) {
        root.style.padding = '0';
        root.appendChild(player);
        for (let node of root.children) {
            if (!node.isSameNode(player)) {
                setDisplayNone(node);
            }
        }
    }

    /**
     * 播放器隐藏无用元素
     */
    function clearPayer(player) {
        setDisplayNone(document.querySelector('#js-player-title'));
        setDisplayNone(document.querySelector('.layout-Player .layout-Player-aside'));
        document.querySelector('#js-player-toolbar')?.remove();
        const interval = setInterval(() => {
            const element = document.querySelector('div[class^="controlbar-"]');
            if (!element) return;
            element.style.width = '100%';
            setDisplayNone(document.querySelector('div[class^="bacpCommonKeFu"]'));
            setDisplayNone(document.querySelector('div[title="主播精彩时刻"]'));
            setDisplayNone(document.querySelector('div[title="问题反馈"]'));
            setDisplayNone(document.querySelector('div[title="多路观看"]'));
            setDisplayNone(document.querySelector('div[title="网页全屏"]'));
            setDisplayNone(document.querySelector('div[title="退出网页全屏"]'));
            clearInterval(interval)
        }, 500)
        resizePlayer(player);
    }

    /**
     * 播放器自适应宽高
     */
    function resizePlayer(player) {
        const windowHeight = innerHeight - 10;
        const height = player.offsetHeight;
        if (height > windowHeight) {
            player.style.width = innerWidth * (windowHeight / height) + 'px'
        }
        player.style.margin = '0 auto';
    }

    /**
     * 隐藏元素
     */
    function setDisplayNone(node) {
        if (!node) return;
        node.style.display = "none";
    }
})();