Greasy Fork

Greasy Fork is available in English.

斗鱼自动切换最高画质或最低画质

斗鱼直播自动调整最低分辨率或最高分辨率;自动调整2K、蓝光、超清、高清清晰度;

目前为 2021-08-03 提交的版本,查看 最新版本

// ==UserScript==
// @name         斗鱼自动切换最高画质或最低画质
// @namespace    https://github.com/Eished
// @author       Eished
// @version      2021.08.03.3
// @description  斗鱼直播自动调整最低分辨率或最高分辨率;自动调整2K、蓝光、超清、高清清晰度;
// @license      AGPL-3.0
// @match        *://www.douyu.com/*
// @icon         https://www.google.com/s2/favicons?domain=greasyfork.org
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// ==/UserScript==


(function () {
  'use strict';

  const videoSub = document.querySelector(".layout-Player-videoSub");
  if (videoSub == undefined) {
    return;
  }

  let Clarity = GM_getValue("Clarity");
  if (Clarity == undefined) {
    Clarity = 1;
    GM_setValue("Clarity", Clarity);
  }

  const observer = new MutationObserver(callback);
  observer.observe(videoSub, {
    childList: true,
    subtree: true
  })

  function callback() {
    const refreshvideo = document.querySelector("#refresh-video");
    if (refreshvideo) {
      observer.disconnect();
      const reg = /rate-.+/;
      const right = document.querySelector("#refresh-video").parentElement.childNodes;
      for (let i = 0; i < right.length; i++) {
        const element = right[i];
        if (reg.test(element.className)) {
          let li;
          if (Clarity == 1) {
            li = element.querySelector("div > ul").firstElementChild; // 最高画质
          } else {
            li = element.querySelector("div > ul").lastElementChild; // 最低画质
          }
          li.className ? console.log(li.className) : li.click();
          return;
        }
      }
      console.log("没有画质选项");
    }
  }

  function high() {
    Clarity = 1;
    GM_setValue("Clarity", Clarity);
    location.reload();
  }

  function low() {
    Clarity = 0;
    GM_setValue("Clarity", Clarity);
    location.reload();
  }
  GM_registerMenuCommand("最高画质", high);
  GM_registerMenuCommand("最低画质", low);
})();