斗鱼(广告/活动/弹幕)屏蔽

屏蔽部分斗鱼直播间无意义广告、活动、弹幕

目前为 2018-10-28 提交的版本。查看 最新版本

// ==UserScript==
// @name         斗鱼(广告/活动/弹幕)屏蔽
// @namespace    http://tampermonkey.net/
// @version      0.0.26
// @description  屏蔽部分斗鱼直播间无意义广告、活动、弹幕
// @author       hulala
// @match        *://www.douyu.com/*
// @require      //cdn.staticfile.org/jquery/1.12.4/jquery.min.js
// @require      //cdn.staticfile.org/moment.js/2.22.2/moment.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var $hl = jQuery.noConflict(true);
    var time = 0;
    var binded = false;
    var chatcache = {
      _count_: 0
    };
    window.chats = chatcache;
    
    var HULALA_HIDE = new Array(
        ".room-ad-video-down",
        ".valentine1807",
        ".adsRoot_7c5z4",
        ".chat-ad",
        "#js-annual1809",
        ".Annual1809",
        ".room-ad-bottom",
        "#js-chat-notice",
        ".column.rec",
        "#js-recommand",
        ".recommendAD-824567",
        ".recommendApp-cbeff7",
        ".broadcastDiv-343e1a",
        ".PaladinPop",
        ".no-login",
        "#js-annual1809",
        ".Annual1809-gifttip",
        ".giftbatter-noble-enter",
        ".Bottom"
    );
    
    var HULALA_DEL = new Array(
        "#js-annual1809",
        "#js-room-activity",
        ".ACT110913",
        ".giftbatter-box",
        ".Bottom"
    );

    var removeAD = function(){
        var gifts = $hl("#listId").parent().parent();
        var chat = $hl(".PlayerCaseSub-Main.is-unlogin");

        for (var i = 0;i<HULALA_HIDE.length; i++){
            $hl(HULALA_HIDE[i]).css("display", "none");
        }

        for (var i = 0;i<HULALA_DEL.length; i++) {
            $hl(HULALA_DEL[i]).remove();
        }

        gifts.css("display","none");
        chat.css("top", "0px");
    }
    

    removeAD();

    var timer = window.setInterval(function() {
        removeAD();
        time++;
        if(time >= 15 && timer) {
            window.clearInterval(timer);
            timer = null;
        }
    }, 3000);
 
    var chatHandler = function(e){
        var node = e.target;
        var user = $hl(node);
        var username = user.find(".Barrage-nickName").attr("title") || user.find(".js-nick").data("nn") || user.find(".js-nick").text().trim();
        var userid = user.find(".Barrage-nickName").data("uid") || user.find(".js-nick").attr("rel");
        var usersay = user.find(".Barrage-content").text().trim() || user.find("[chatid]").text().trim();
        var timestamp = new Date().getTime();
        if (node.tagName === 'LI') {
            if (node.innerText.indexOf('欢迎来到本直播间') !== -1) {
                if(!chatcache[userid]) {
                  chatcache[userid] = {
                    name: String(username),
                    chats: [],
                    time: moment(timestamp).format("YYYY-MM-DD HH:mm:ss"),
                    timestamp: timestamp
                  };
                  chatcache._count_ ++;
                }

                user.remove();
                return;
            }
            if (node.innerText.indexOf('赠送给主播') !== -1) {
                user.remove();
                return;
            }
            if(!chatcache[userid]) {
              chatcache[userid] = {
                name: String(username),
                chats: [],
                time: moment(timestamp).format("YYYY-MM-DD HH:mm:ss"),
                timestamp: timestamp
              };
              chatcache._count_ ++;
            }
            chatcache[userid].chats.push({
              say: usersay,
              time: moment(timestamp).format("YYYY-MM-DD HH:mm:ss"),
              timestamp: timestamp
            });
        }
    }
  
    var removeWelcome = function(){
        if(binded){
          return;
        }
        var chatlist = $hl('.layout-Player-aside');
        chatlist.on("DOMNodeInserted", "#js-barrage-list",chatHandler);
        var spelist = $hl(".PlayerCaseSub-Main");
        spelist.on("DOMNodeInserted",'[data-type="chat-list"]',chatHandler);
        binded = true;
    }
    window.setInterval(function(){removeWelcome()}, 1000);
})();