虎牙直播集合

更改虎牙弹幕,屏蔽弹幕,虎牙精简,自动切换最高清晰度免登录(不可用),作者拿来看武林外传用的

当前为 2021-02-25 提交的版本,查看 最新版本

// ==UserScript==
// @name         虎牙直播集合
// @namespace    http://tampermonkey.net/
// @version      0.63
// @description  更改虎牙弹幕,屏蔽弹幕,虎牙精简,自动切换最高清晰度免登录(不可用),作者拿来看武林外传用的
// @author       You
// @include      https://www.huya.com/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_addStyle
// @grant        GM_listValues

// @require      https://code.jquery.com/jquery-3.5.1.min.js
// ==/UserScript==

(function () {
  "use strict";
  //------虎牙精简 来自:G-uang------

  let css = "{display:none !important;height:0 !important}";

  css += "#J_roomWeeklyRankList{display:none !important;}";
  css += "#wrap-income > iframe{display:none !important;}";
  css += "#chatRoom{height:50% !important;}";
  css += "#chatRoom > div{height:100% !important;}";
  css += ".room-footer{display:none !important;}";
  css += "#J-room-chat-color{display:none !important;}";
  css += "#share-entrance{display:none !important;}";
  css += "#J_hySide{display:none !important;}";
  css += "#hy-nav-download{display:none !important;}";
  css += "#player-gift-wrap{display:none !important;}";
  css += ".gift-info-wrap{display:none !important;}";
  css += "#wrap-notice{display:none !important;}";
  css += "#J_roomGgTop{display:none !important;}";
  css += "#J_adCategory{display:none !important;}";
  css += "#avatar-img{display:none !important;}";
  css += "#banner-ab{display:none !important;}";
  css +=
    "#huya-ab > div.banner-ab-warp > div.ab-close-btn:last-child{display:none !important;}";
  css +=
    "#chat-room__list > li.J_msg:first-child > p{display:none !important;}";
  css +=
    "#duya-header > div.duya-header-wrap.clearfix > div.duya-header-bd.clearfix > div.duya-header-ad:last-child > a.duya-header-ad-link.j_duya-header-ad > img.duya-header-ad-img{display:none !important;}";
  css +=
    "#main_col > div.room-backToTop.j_room-backToTop:last-child{display:none !important;}";
  css +=
    "#J_playerMain > div.room-player-gift-placeholder:first-child{display:none !important;}";
  css +=
    "#J_roomHeader > div.room-hd-r:last-child > div.host-control.J_roomHdCtrl > div.jump-to-phone:nth-child(4){display:none !important;}";
  css += "#matchMain > div.diy-comps-wrap{display:none !important;}";
  css += "#J_spbg{display:none !important;}";
  css += "#chatRoom > div.room-gg-chat:last-child{display:none !important;}";
  css += "#player-resource-wrap{display:none !important;}";
  css += "#J_mainRoom > div.box-crumb:first-child{display:none !important;}";
  css +=
    "#wrap-ext > div.popup-44f9e031 > section > iframe{display:none !important;}";
  css +=
    "#J_roomHeader > div.room-hd-r:last-child > div.host-control.J_roomHdCtrl > div.room-business-game:last-child > a.game--3vukE-yU-mjmYLSnLDfHYm{display:none !important;}";
  css +=
    "#player-ext-wrap > div.popup-44f9e031 > section > iframe{display:none !important;}";
  css +=
    "#player-ctrl-wrap > div.player-app-qrcode:nth-child(4){display:none !important;}";
  //css += '#tipsOrchat > div.chat-room__ft > div.chat-room__ft__chat:last-child{display:none !important;}'//弹幕文字输入框
  css += "#chatHostPic{display:none !important;}"; //粉丝徽章

  loadStyle(css);
  function loadStyle(css) {
    var style = document.createElement("style");
    style.type = "text/css";
    style.rel = "stylesheet";
    style.appendChild(document.createTextNode(css));
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(style);
  }

  //m开关弹幕
  var selector = {
    "www.huya.com": {
      on: "div[class='danmu-show-btn'][title='关闭弹幕']",
      off: "div[class='danmu-show-btn danmu-hide-btn'][title='开启弹幕']",
    },
  };
  var live_site = document.domain;
  function danmaku_switcher(player) {
    if (document.querySelector(player.on) != null) {
      document.querySelector(player.on).click();
    } else if (document.querySelector(player.off) != null) {
      document.querySelector(player.off).click();
    }
  }
  $(document).keypress(function (key) {
    if (key.which === 77 || key.which === 109) {
      danmaku_switcher(selector[live_site]);
    }
  });

  //自动切换最高画质(原作者CosilC,如有疑问联系我删除)
  $(function () {
    var t1 = setInterval(function () {
      console.log("t1 is live");
      if (
        $(".player-videotype-cur").html() !=
        $(".player-videotype-list li:first").html()
      ) {
        $(".player-videotype-list li:first").click();
        /*var watch = setInterval(function(){
                    console.log("watch is live");
                    if($(".player-play-big")[0].style.display=="block"){
                          $(".player-play-big").click();
                          clearInterval(watch);
                    }
                },1000);*/
      } else {
        clearInterval(t1);
      }
    }, 2000);
  });
  //------结束虎牙精简------

  //------免登录(不可用)------
  $(document).ready(function () {
    $("#player-login-tip-wrap").remove();
    VPlayer.prototype.checkLogin(true);
  });
  //------结束免登录(不可用)------

  //------CSS 控制区------
  GM_addStyle(`
   .nav_btn {
        position: absolute;
        top: 0;
        right: 8rem;
    }
    .nav-expand-list ul > li:hover {
        background-color: grey;
    }
    .nav-expand-list ul > li > a {
        display: inline-block;
        width: 100%;
        text-decoration: none;
        line-height: 3rem;
        color: black;
    }
    #mask {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, .3);
        display: none;
        z-index: 2147483647;
        color: #010101;
    }

   #mask a:hover {
        text-decoration: underline;
    }

    #dialog {
        position: absolute;
        width: 35rem;
        min-height: 15rem;
        background-color: #ffffff;
        border-radius: 10px;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 5rem;
        box-sizing: border-box;
        user-select: none;
        display:flex;
        flex-direction: column;
        justify-content: center;
    }

    .words {
        display: inline-block;
        padding: .2rem;
        border: 2px solid #999;
        margin: 0 0 1rem 1rem;
        border-radius: 3px;
    }

    .words > svg {
        width: 1rem;
        height: 1rem;
        margin-left: 1.5rem;
    }

    .ex_input {
        outline: none;
        margin: 5% 0;
        height: 1.7rem;
        width: 70%;
        font-size: 1.3rem;

        border: none;
        border-radius: 4px;
        border-bottom: 1px solid grey;
        
    }

    .ex_button {
        margin: auto; /*will be center*/
        background: none;
        color: #b06530;
        border: 2px solid;
        border-radius:4px;
        height: 1.7rem;
        width: 25%;
        font-size: 1em;
    }
    .remove {
        cursor: pointer;
    }

    #exist {
        margin: 2rem 0;
    }

    #exist > div {
        margin: 1rem 0 0 5%;
        width: 80%;
        border: 1px solid #666;
        border-radius: 3px;
        padding: 1rem;
    }
    
    #blacklistL {
        margin: 2rem 0;
    }

    #blacklistL > div {
        margin: 1rem 0 0 5%;
        width: 80%;
        border: 1px solid #666;
        border-radius: 3px;
        padding: 1rem;
    }
    `);
  //------结束CSS 控制区------

  //------初始数据------
  let keywords = GM_getValue("keywords") || ["emot_png", "♥"];
  let danmuSize = GM_getValue("danmuSize") || 50;
  //------结束初始------

  //------监听区域------
  // 弹幕监听放大器
  let observer = new MutationObserver(() => {
    $("#danmudiv > .danmu-item").css("font-size", `${danmuSize}px`);
    $("#danmudiv > .danmu-item").css("line-height", `${danmuSize + 25}px`);
    let danmus = document.querySelectorAll(".danmu-item");
    for (let item of danmus) {
      item.css("top", `${itme.css("top") * 1.15}px`);
      for (let word of keywords) {
        if (item.querySelector("span").innerHTML.indexOf(word) !== -1) {
          console.log(
            "!!!已过滤一条弹幕,内容是: ",
            item.querySelector("span").innerHTML
          );
          item.remove();
          break;
        }
      }
    }
  });
  //------监听区域结束------

  //------前端dom区域------
  setTimeout(() => {
    createElement();

    const plbtn = document.getElementById("player-btn");
    if (plbtn.title === "开始观看") plbtn.click();

    let $edit = $("#edit");
    let danmudiv = document.querySelector("#danmudiv");
    let $mask = $("#mask");
    let $exist = $("#exist > div");

    //初始化pannel里的屏蔽词
    for (let index = 0; index < keywords.length; index++) {
      insertToExist(keywords[index], index, $exist);
    }

    $edit.click(() => {
      $mask.css("display", "block");
    });

    //点击dialog以外的地方关闭窗口
    $(document).mouseup(function (e) {
      var _con = $("#dialog"); // 设置目标区域
      if (!_con.is(e.target) && _con.has(e.target).length === 0) {
        $("#mask").css("display", "none");
      }
    });

    $("#exist > #clear").click(() => {
      if (confirm("确定要移除所有的屏蔽词吗?")) {
        $exist.empty();
        keywords.length = 0;
        GM_setValue("keywords", keywords);
      }
    });
    //点击移除keywords
    $exist.on("click", ".words", function () {
      $(this).remove();
      keywords.splice(parseInt($(this).attr("data-index")), 1);
      GM_setValue("keywords", keywords);
    });

    //保存屏蔽词
    $("#save > button").click(() => {
      let val = $("#save > input").val();

      if (val.trim() === "") {
        return alert("请输入有效的屏蔽词");
      } else if (keywords.some((item) => item === val)) {
        return alert("已存在,请勿重复添加");
      }
      insertToExist(val, keywords.length, $exist);
      keywords.push(val);
      $("#save > input").val("");
      GM_setValue("keywords", keywords);
    });

    //保存弹幕大小
    $("#danmuSize > button").click(() => {
      danmuSize = parseInt($("#danmuSize > input").val());
      GM_setValue("danmuSize", danmuSize);
    });

    observer.observe(danmudiv, { childList: true });
  }, 3000);
  //------结束dom区------

  //------html 显示区------
  function createElement() {
    $(".duya-header-wrap").append(`
    <div class="hy-nav-right nav_btn">
        <a class="hy-nav-title" href="javascript:;">
            <span class="title" id="keywords">屏蔽词</span>
        </a>
        <div class="nav-expand-list">
            <i class="arrow"style="margin-left: -1.5rem;"></i>
            <div style="padding: 1rem;">
                <ul>
                    <li><a href="javascript:;" id="edit">编辑器</a></li>
                </ul>
            </div>
    </div>`);

    $("body").append(`
    <div id="mask">
        <div id="dialog">
            <div id="save">
                <input class="ex_input" type="text" placeholder="请输入屏蔽关键词">
                <button class="ex_button">添加</button>
            </div>

            <div id="danmuSize">
                <input class="ex_input" type="number" value="${danmuSize}">
                <button class="ex_button">更改文字大小</button>
            </div>
            <div id="exist">
                <span style="font-size: 14px;">已添加的屏蔽词</span>
                <a href="javascript:;" style="color: deepskyblue;font-size: 14px;float: right; border: 2px solid; border-radius:4px;text-align: right" id="clear">清除所有</a>

                <div>
                </div>
            </div>
        </div>
    </div>
`);
  }
  //------结束html显示区------

  function insertToExist(val, index, $parent) {
    let $item = `<span class="words" data-index="${index}">${val}</span>`;
    $parent.append($item);
  }
})();

QingJ © 2025

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