// ==UserScript==
// @name 斗鱼安心看
// @namespace http://tampermonkey.net/
// @version 0.1.2
// @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';
window.$$jq = jQuery.noConflict(true);
var time = 0;
var binded = false;
var chatcache = {
_count_: 0,
_total_: 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",
".ToolbarActivityArea",
".Title-columnTag"
);
var removeAD = function(){
var gifts = $$jq("#listId").parent().parent();
var chat = $$jq(".PlayerCaseSub-Main.is-unlogin");
for (var i = 0;i<HULALA_HIDE.length; i++){
$$jq(HULALA_HIDE[i]).css("display", "none");
}
for (var i = 0;i<HULALA_DEL.length; i++) {
$$jq(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;
if (node.tagName === 'LI') {
var user = $$jq(node);
user.find(".Barrage-icon,.Motor,.UserLevel").hide();
user.find(".chat-icon-pad, .motorcade-icon").hide();
if (user.hasClass("status-low-enter") || user.find(".Barrage-userEnter").length > 0) {
user.hide();
}
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 (!usersay) {
user.hide();
}
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_ ++;
}
}
if(!chatcache[userid]) {
chatcache[userid] = {
name: String(username),
chats: [],
time: moment(timestamp).format("YYYY-MM-DD HH:mm:ss"),
timestamp: timestamp
};
chatcache._count_ ++;
}
var tc = chatcache._count_;
if(chatcache._count_ > 999) {
tc = "999+";
}
$$jq("#chatman").text(tc).attr("title", `共${chatcache._count_}人`);
if (usersay) {
chatcache[userid].chats.push({
say: usersay,
time: moment(timestamp).format("YYYY-MM-DD HH:mm:ss"),
timestamp: timestamp
});
chatcache._total_ ++;
var tt = chatcache._total_;
if(chatcache._total_ > 999) {
tt = "999+";
}
$$jq("#chattotal").text(tt).attr("title", `共${chatcache._total_}条弹幕`);
}
}
}
var removeWelcome = function(){
if(binded){
return;
}
var chatlist = $$jq('.layout-Player-aside');
chatlist.on("DOMNodeInserted", "#js-barrage-list",chatHandler);
var spelist = $$jq(".PlayerCaseSub-Main");
spelist.on("DOMNodeInserted",'[data-type="chat-list"]',chatHandler);
binded = true;
}
var closeChat = function(){
$$jq("[class^=comment]").css("visibility","hidden");
}
var rightChat = function(){
$$jq("#js-player-barrage").css("top","0px");
$$jq(".Barrage-toolbar").css("marginTop","0px");
$$jq(".layout-Player-rankAll,.layout-Player-rank,#js-floatingbarrage-container").remove();
if($$jq(".Barrage").find("#chattitle").length <= 0) {
$$jq(".Barrage").prepend(
`<div id="chattitle" style="
position: absolute;
width: 100%;
z-index: 2;
line-height: 40px;
font-size: 14px;
text-align: left;
text-indent: 12px;
background: #fff;
color: #797f89;">聊天窗口
<span style="font-size:12px;padding-left: 8px;">
<b id="chatman">0</b>人/<b id="chattotal">0</b>条弹幕
</span>
</div>`
);
}
$$jq("#js-barrage-list").parent().css("top","38px");
$$jq(".Barrage-toolbar").css({
"right": "-36px",
"top": "8px",
"left": "auto",
"display": "block"
});
$$jq(".Barrage-toolbarLock,.Barrage-toolbarClear").css({
"border": "0px",
"padding": "0px 4px",
"margin": "0px"
});
$$jq("#js-fans-rank").remove();
$$jq("#js-chat-cont").css("top","0px");
}
window.setInterval(function(){
removeWelcome();
closeChat();
rightChat();
}, 1000);
})();