// ==UserScript==
// @name 斗鱼(ClearAds)【去广告&&内容精简】
// @namespace http://tampermonkey.net/
// @version 1.2.6
// @description 1、去除广告 2、内容精简 3、主题色=>默认夜晚黑/少女粉/天空蓝/极致黑 4、防刷屏(屏蔽刷屏消息) 5、自动网页全屏 6、自动关闭弹幕 7、自动选择最高画质 8、自动佩戴粉丝牌
// @author Ginyang
// @match *://www.douyu.com/*
// @icon https://www.douyu.com/favicon.ico
// @run-at document-start
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// @license MIT
// ==/UserScript==
/************************* v1.2.6 更新内容*************************
*
1、【优化】优化了主题色的各个细节(包含页面主滚动条)
2、【新增】主题色新增边框阴影选项,点击主题色右侧箭头查看选项
3、【优化】自动网页全屏 合并了 快速响应 与 增强
4、【新增】新增-直播间-自动关闭弹幕
5、【新增】新增-直播间-自动选择最高画质
6、【新增】键盘功能增强
按键 作用
Enter 聚焦直播间聊天输入框
Esc 取消聊天输入框聚焦、退出网页全屏、退出全屏
W 开/关 网页全屏
F 开/关 全屏
R 重新加载直播
D 开/关 弹幕
M 静音/取消静音
S 打开插件设置(主要是在网页全屏时快速打开设置
7、【修复】修复了在其他页面设置内容与直播间设置内容不同步的问题(ps.之前的版本在除了直播间的页面显示有问题,但仍以直播间的设置为准)
*************************************************************** */
/********************************各类广告*******************************/
if (window.top === window) {
GM_addStyle(`
.MatchFocusFullPic, .Prompt-container {
display: none !important;
}
.HeaderGif-left, .HeaderGif-right {
display: none !important;
}
/*"直播"等栏顶部2个横幅广告*/
section.layout-Banner {
display: none !important;
}
/*嵌入各个直播间尾部分类广告*/
.AdCover {
display: none !important;
}
/*各种嵌入广告*/
.DropMenuList-ad, .DropPane-ad, .CloudGameLink, .Search-ad, .FishShopTip, .RedEnvelopAd-adBox, .ChargeTask, [class^="recommendAD-"], [class^="recommendApp-"], .wm-pc-imgLink, [class^="code_box-"], .layout-Slider-link.is-advert {
display: none !important;
}
/*直播页面主要几个广告*/
.Bottom-ad, #js-room-activity, .ScreenBannerAd, .XinghaiAd, .PlayerToolbar-ContentCell .PlayerToolbar-signCont, .SignBarrage, .IconCardAdCard {
display: none !important;
}
`);
/***********************************屏蔽****************************/
GM_addStyle(`
/*屏蔽网页全屏与直播全屏右上角关注提示框,直播间点赞*/
.FullPageFollowGuide, .LiveRoomDianzan, .FollowGuide{
display: none !important;
}
/*屏蔽宝箱礼物特效*/
.layout-Player-effect {
display: none !important;
}
/*屏蔽直播间上方第三行内容*/
.Title-row:nth-of-type(3) {
display: none !important;
}
/*金铲铲、和平手册*/
.JinChanChanGame, .PeacehandBarrage{
display: none !important;
}
`);
/************************setting、overlay、dialog、close、table、toggle、scrollbar...CSS ************************/
GM_addStyle(`
/**********************************设置按钮setting*****************************/
#ca_btn_setting{
position: fixed;
top:14px;
right:14px;
width: 32px;
height: 32px;
display: block;
transition: transform 0.3s ease-in-out;
cursor: pointer;
z-index: 10000;
opacity: 0.9;
}
#ca_btn_setting:hover{
transform: rotate(60deg);
}
/***************************遮罩层overlay、对话框dialog***************************/
#ca_overlay *{
-webkit-user-select: none; /* Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE 10+ */
user-select: none;
}
#ca_overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
justify-content: center;
align-items: center;
}
@keyframes show {
0% {
transform: rotateX(30deg);
}
58% {
opacity: 1;
transform: rotateX(-12deg);
}
100% {
opacity: 1;
}
}
#ca_dialog {
display: block;
position: absolute;
width: 320px;
height: 300px;
background-color: #fff;
color: #333;
font-size: 16px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
z-index: 10000;
padding: 20px;
transition: all 0.3s ease-in-out;
/* transform-style: preserve-3d; */
transform-origin: center center;
animation: show 0.3s ease-in-out;
}
#ca_dialog h2{
font-size: 24px;
display: block;
margin-bottom: 12px;
font-weight: bold;
}
/***************************关闭close***************************/
#ca_btn_close {
position: absolute;
top: 20px;
right: 20px;
margin: 3px;
width: 24px;
height: 24px;
cursor: pointer;
box-sizing: border-box;
}
#ca_btn_close:hover::before,
#ca_btn_close:hover::after {
background: red;
}
#ca_btn_close:before {
position: absolute;
content: '';
width: 1px;
height: 25px;
background-color: var(--theme-color2);
transition: background-color 0.3s;
transform: rotate(45deg);
top: -3px;
left: 11px;
}
#ca_btn_close:after {
content: '';
position: absolute;
width: 1px;
height: 25px;
background-color: var(--theme-color2);
transition: background-color 0.3s;
transform: rotate(-45deg);
top: -3px;
left: 11px;
}
/***************************** 表格table **************************/
.ca_table {
display: block;
width: 300px;
height: 220px;
margin: auto;
border-collapse: collapse;
overflow-y: scroll;
scrollbar-width: thin;
}
.ca_table tr {
border-top: 1px solid #ddd;
}
.ca_table tr:first-child {
border-top: none;
}
.ca_table td {
font-size: 16px;
padding: 10px;
}
.ca_table td:first-child {
width: 250px;
text-align: left;
}
.ca_table td:last-child {
width: 50px;
text-align: right;
}
/**************************** checkbox ***************************/
.ca_toggle {
position: absolute;
margin-left: -9999px;
visibility: hidden;
}
.ca_toggle+label {
display: block;
position: relative;
cursor: pointer;
outline: none;
user-select: none;
margin-right: 0px;
transition: box-shadow 0.3s;
}
.ca_toggle+label:hover {
box-shadow: 0 8px 10px 0 rgba(0, 0, 0, 0.24), 0 8px 12px 0 rgba(0, 0, 0, 0.19);
}
input.ca_toggle-round+label {
padding: 2px;
width: 40px;
height: 20px;
background-color: #dddddd;
border-radius: 20px;
}
input.ca_toggle-round+label:before,
input.ca_toggle-round+label:after {
display: block;
position: absolute;
top: 1px;
left: 1px;
bottom: 1px;
content: "";
}
input.ca_toggle-round+label:before {
right: 1px;
background-color: #f1f1f1;
border-radius: 20px;
transition: background-color 0.3s;
}
input.ca_toggle-round+label:after {
width: 20px;
background-color: #fff;
border-radius: 100%;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
transition: background-color 0.3s, margin 0.3s;
}
input.ca_toggle-round:checked+label:before {
background-color: #8ce196;
}
input.ca_toggle-round:checked+label:after {
margin-left: 20px;
}
/****************************** 滚动条scrollbar *****************************/
#ca_dialog ::-webkit-scrollbar {
width: 5px;
height: 10px;
}
#ca_dialog ::-webkit-scrollbar-track {
width: 6px;
background: rgba(#101F1C, 0.1);
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
border-radius: 2em;
}
#ca_dialog ::-webkit-scrollbar-thumb {
background-color: rgba(144, 147, 153, .3);
background-clip: padding-box;
min-height: 28px;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
border-radius: 2em;
transition: background-color .3s;
cursor: pointer;
}
#ca_dialog ::-webkit-scrollbar-thumb:hover {
background-color: rgba(144, 147, 153, .5);
}
/****************************** radiobutton切换 *****************************/
#ca_ul {
position: relative;
width: 300px;
margin: -4px 0 0 10px;
padding: 0;
}
#ca_ul li {
list-style: none;
}
#ca_ul li input {
display: none;
}
#ca_ul li .rb-label {
float: left;
width: 150px;
text-align: center;
line-height: 30px;
border: 1px solid #000;
border-right: 0;
box-sizing: border-box;
cursor: pointer;
transition-property: background-color;
transition-duration: .3s;
}
#ca_ul #rb-label1 {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
#ca_ul #rb-label2 {
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
#tab1:checked+.rb-label,
#tab2:checked+.rb-label {
color: #eee !important;
background-color: #000 !important;
}
#ca_ul li:last-child .rb-label {
border-right: 1px solid #000;
}
.ca_content {
opacity: 0;
visibility: hidden;
position: absolute;
left: 0;
top: 40px;
width: 100%;
box-sizing: border-box;
font-size: 24px;
text-align: center;
transition-property: opacity;
transition-duration: .3s;
}
#ca_ul li input:checked~.ca_content {
opacity: 1;
visibility: visible;
}
/******************************* handle_dispop && cancel***********************************/
#btn_hand_dispop {
margin-top: 5px;
width: auto;
height: 28px;
border: none;
border-radius: 5px;
background-color: rgba(23, 171, 227, 0.8);
color: white;
cursor: pointer;
padding: 0 5px;
}
#btn_hand_dispop:hover {
background-color: rgba(23, 171, 227, 1)
}
#btn_hand_dispop:focus {
outline: none;
}
#btn_hand_dispop:disabled {
background-color: #999;
color: #eee;
cursor: auto;
}
#btn_cancel_dispop {
margin-left: 10px;
margin-top: 5px;
width: auto;
height: 28px;
border: none;
border-radius: 5px;
background-color: rgba(142, 158, 191, .8);
color: #eee;
cursor: pointer;
padding: 0 5px;
}
#btn_cancel_dispop:hover {
background-color: rgba(142, 158, 191, 1)
}
#btn_cancel_dispop:focus {
outline: none;
}
#btn_cancel_dispop:disabled {
background-color: #999;
cursor: auto;
}
/*************hand_dispop_box************/
#hand_dispop_box{
border: 1px solid #999;
padding: 10px; border-radius: 10px;
transition: box-shadow 0.3s ease;
}
#hand_dispop_box:hover {
box-shadow: 1px 1px 5px 1px rgba(0, 0, 0, .1);
}
/*************hand_dispo---#dispop_time************/
#dispop_time{
border-radius: 5px;
cursor: pointer;
transition:background-color 0.3s ease-in-out,color 0.3s ease-in-out;
}
/**************************** 主题theme ********************************/
.theme_color {
display: inline-block;
position: relative;
top: 2px;
width: 20px;
height: 20px;
margin-left: 5px;
border-radius: 10px;
transition: transform .25s;
border: 1px solid;
border-color: rgba(255, 255, 255, .5);
background-color: rgb(101, 101, 181);
box-sizing: border-box;
}
.theme_color:not(.selected) {
cursor: pointer;
}
.theme_color:not(.selected):hover {
transform: scale(1.1);
}
.theme_color.selected {
border: 3px solid rgba(255, 255, 255, .5);
}
.rb_theme_color:checked+.theme_color {
border: 3px solid rgba(255, 255, 255, .5);
cursor: inherit;
transform: none;
}
#theme_dark{background-color:#333}
#theme_pink{background-color:#ffc0cb}
#theme_blue{background-color:#87CEFA}
#theme_deepdark{background-color:#000}
/**************箭头arrow***********/
.ca_arrow_right {
display: flex;
cursor: pointer;
margin-left: 5px;
/* 水平居中 */
justify-content: center;
/* 垂直居中 */
align-items: center;
}
.ca_arrow_right svg{
-webkit-transition: -webkit-transform .3s;
transition: -webkit-transform .3s;
transition: transform .3s;
-o-transition: transform .3s;
transition: transform .3s, -webkit-transform .3s;
}
#ca_theme_more_option {
display: flex;
justify-content: space-between;
transition: height 0.3s ease, margin 0.3s ease;
text-align: right;
margin-top: 0;
padding-right: 5px;
height: 0;
overflow: hidden;
}
#ca_theme_row.show_more_option #ca_theme_more_option {
margin-top: 10px;
padding-right: 5px;
height: 24px;
}
#ca_theme_row.show_more_option #ca_arrow_theme_more_option>svg {
transform: rotate(90deg);
}
`);
/**********************************************************************************************/
/***************************************开关灯按钮css************************************************/
GM_addStyle(`
#cb_dark_mode_box{
right: 54px;
top: 18px;
position: fixed;
z-index: 10000;
}
#cb_dark_mode_box input.ca_toggle-round:checked+label:before {
background-color: var(--theme-background-color1);
}
#cb_dark_mode_box input.ca_toggle-round+label:after {
background-color: var(--theme-background-color1);
}
#cb_dark_mode_box input.ca_toggle-round:checked+label:after {
background-color: var(--theme-color1);
}
`);
/**********************************************************************************************/
(function () {
'use strict';
window.onload = function () {
// console.clear();
console.log('【ClearAds】ClearAds loaded. ---By Ginyang.');
/* 主题色 */
const color_dark = ['#333', '#111', '#555', '#222', '#ddd', '#aaa'];
const color_pink = ['#ffc0cb', '#ffa2a9', '#ffb6c1', '#ffb5b5', '#964c64', '#ac627a'];
const color_blue = ['#87CEFA', '#00BFFF', '#9ae0f7', '#6495ED', '#191970', '#4848bf'];
const color_deepdark = ['#111', '#000', '#131313', '#222', '#ccc', '#aaa'];
/* 夜晚模式css ====> v1.2.5 改用作 主题色 */
const dark_mode_css = ':root{--theme-background-color1:#333;--theme-background-color2:#111;--theme-background-color3:#555;--theme-background-color4:#222;--theme-color1:#ddd;--theme-color2:#aaa}body,.layout-Module-head,.AnchorFriend-content .AnchorFriend-footer a{background-color:var(--theme-background-color1) !important;color:var(--theme-color1)}#js-header .Header-menu-link .Category-item,.cate2TagB .cate2TagB-item,.categoryBoxB-editB .edit,.categoryTab-list .categoryTab-item,.ListRecommend-refresh,.layout-Module-label--hasList,.layout-Module-label,.ListHeader-clearAll,.Header-follow-tab,.Header-history-tab{background-color:var(--theme-background-color3) !important;color:var(--theme-color1) !important}#js-header .Header-menu-link .Category-item:hover,.GroupEditPop-copy:hover,.YubaMessage-link:hover,.Title-anchorName-HC .Title-anchorName-block:hover,.Title-official{background-color:var(--theme-background-color2) !important;color:#ff5d23 !important}.omnibusItemCard,.CustomGroupMenu-wrapper,.AssembleExpressHeader-head,.AthenaBoothPanel-item{background-color:var(--theme-background-color2) !important;color:var(--theme-color1) !important}.layout-Module-label--hasList.is-active,.layout-Module-label--hasList.is-active:hover,.layout-Module-label.is-active,.layout-Module-label.is-active:hover,.ListHeader-clearAll:hover,.Header-follow-tab.is-active,.Header-history-tab.is-active,.DyTab-tabWrap .DyTab-tab.is-cur,.Rank-content a.AnchorRankList-liveRoom:hover{background-color:#ff5d23 !important;color:var(--theme-color1) !important}.DyTab-tabWrap .DyTab-tab,.Rank-content a.AnchorRankList-liveRoom{background-color:var(--theme-background-color1) !important;color:var(--theme-color1) !important}.public-DropMenu-drop,.layout-Player-title,.layout-Player-toolbar,.layout-Player-barrage,.layout-Player-chat,.ChatSend-txt,.ChatTabContainer-titleWraper--tabLi,.newBroadcast-box,#ca_dialog,.layout-Module-head .leftArrow,.dy-ModalRadius-content .dy-ModalRadius-close,.Search-historyList>li:hover,.Search-suggestBoxContent .Search-default-item:hover,.AllFollowPop-cates .AllFollowPop-cates-wrapper,.SortPop-cates .SortPop-cates-wrapper,.Title-anchorName-HC,.YubaGroup-pane .YubaGroupItem:hover,.Backpack .Backpack-prop.is-blank,.Match-oneHead,.ChatEmotion .Emotion,.FansMedalPanel-OwnerInfo,.FansMedalList-box,.ChatFansBarragePop,.FilterKeywords,.BarrageWordPanel-card,.PopularBarragePanel,.PopularBarragePanel-foot,.EmotionList-con,.DiamondsFansEmotToolTips,.Rank .Rank-item .is-even,.VideoAnchorItem:hover,.Search-rank-wrapper:hover .Search-rank,.layout-Tab-container.is-fixed,.u_mainbody,.myprofile_main,.myprofile_main .userinfo,.layout-Section--fullBackground.AwesomeActivities-wrapper,.Aside-nav-drop,.HoverCard-tag,#dispop_time,.Search-topicRecommend .direact{background-color:var(--theme-background-color1) !important}.dy-ModalRadius-content .dy-ModalRadius-close{transition:none}.dy-ModalRadius-footer button{background-color:var(--theme-background-color1)}.Header-wrap,.layout-Player-announce,.VideoEntry-list,.ChatRank-rankWraper,.ChatTabContainer-titleWraper,.ChatRankWeek-headerContent,.ChatTabContainer-titleWraper--tabLi.is-active,.NobleRank,.NobleRankTips,.DiamondsFansRankInfo,.Barrage-roomVip--super,.DyRecCover-content,.DyListCover-content,.DyLiveCover-wrap,.DyLiveCover-wrap.is-hover,a.DyLiveRecord,.DyHistoryCover-content,.Search-hotList li:hover,.Search-suggestBoxContent .Search-recommend:hover,.public-DropMenu.Game .DropMenuList-item:hover,.layout-Classify-card,.HoverCard-wrap,.DropPaneList:hover a,.dy-Modal-content,.AnchorFriendPane-content,.AnchorFriendPane-content .AnchorFriend-footer a,.AnchorLevelTip-content .AnchorLevelTip-levelInfo,.AnchorLevelTip-content .AnchorLevelTip-processInfo,.Title-row-inner,.GiftInfoPanel-cont,.GiftInfoPanel-cont .GiftSkinPanelEnter,.GiftInfoPanel-cont .GiftSkinPanelList,.GiftExpandPanel,.YubaGroup-pane,.YubaGroup-groupTitle,.PublicAnnounce-panel,.wm-pc-room-cover-content,.Backpack,.Backpack .Backpack-propPanel,.BackpackInfoPanel-content,#js-floatingbarrage-container .Barrage-listItem .js-fansfloating-barragecont,.ToTopBtn,.FansMedalList .FansMedalList-item:hover,.ShieldTool-list,.ChatBarrageCollectPop,.BarrageWordPanel,.BarrageWordPanel-header,.js-noblefloating-barragecont.Barrage-notice--noble,.Barrage-notice--replyBarrage,.AthenaBoothPanel-wrapper,.Barrage-EntranceIntroduce,.Barrage-FansHome,#js-search-result .layout-Cover-item,.layout-Card-horizon,.layout-Card-history,.DyCover,.SearchTopic-wrap,.Search-yuba,.layout-Card-rank,.Search-direct,.Search-recommend:hover,.shark-Modal-content,.SearchChannel-item,.VideoRank-listWrap,.News-content,.hotCate-Wrapper .layout-List-item,.footerCate-block,.ActivityItem-card,.AnchorRank .layout-Module-container,.layout-Elevator .Elevator,.Aside-main--expand,.Aside-main--shrink,.Aside-toggle,.Title-followBtnBox.is-followed .Title-followBtn,.Search-topicRecommend:hover{background-color:var(--theme-background-color2) !important}.HoverCard-wrap:after,.GiftExpandPanel-giftTabsWrap:after,.GiftInfoPanel-cont .GiftSkinPanelList-nextMask{display:none !important}.Header-search-wrap .Search,input.search-ipt,.Search-hotList li .Search-direct,.Search-suggestBoxContent .Search-direct,.layout-Module-filter-more,.ListHeader-pop,.layout-Customization,.Match-oneContent,.Rank .Rank-title,.Rank .Rank-item,.layout-Search-input,.Search-input-pane,.Search-input-pane .Search-default-item:hover,.Aside-nav-item:hover,.Aside-menu-item:hover,.Aside-toggle:hover,.Aside-shrink-item:hover,.DyListCover-pic{background-color:var(--theme-background-color3) !important}.UserLevel{background-color:#eee}.layout-Module-title,.Title-roomInfo h2,.Title-roomInfo h3,.Title-roomInfo a,.Title-roomInfo span,.videoTitle,#ca_dialog,.DyRecCover-intro,.DyListCover-intro,.DyLiveCover-intro,.DyLiveRecord-intro,.DyHistoryCover-intro,.Header-search-wrap .Search .Search-text,input.search-ipt,.yubaInfo-itemLeft .title,.AllFollowPop-cates .AllFollowPop-cates-catesTitle,.AllFollowPop-cates .AllFollowPop-cates-followTitleItem,.AllFollowPop-cates-followContainer-item,.AllFollowPop-cates-itemcontainer-item,.SortPop-cates-wrapper div,.HoverCard-title,.layout-Classify-card strong,.Search-suggestBoxContent h3,.ListHeader-extra-cell,.ListHeader-extra-cell .ListHeader-list-icon,.authorSpecial-item .authorName,.game-item .gameInfo .gameName,.game-item .gameInfo .gameTime,.game-item .gameClash span.vs,.indviduation-itemTitle,.indviduation-itemTitle a,.recommend-item .infoBox .title,.rank-container .rank-item .rankInfo .userName,.rank-container .rank-item .rankLevel .name,.rank-container .rank-item .rankLevel .score,.dy-ModalRadius-title,.Title-anchorName-HC .Title-anchorName-block,.AnchorLevelTip-content .AnchorLevelTip-levelTipTxt,.AnchorLevelTip-content .AnchorLevelTip-task,.AnchorLevelTip-content .AnchorLevelTip-dateInfo,.Title-row-inner .Title-row-icon,.Title-row-inner .Title-row-text,.Title-blockInline.Title-more,.GiftInfoPanel-cont .GiftInfoPanel-name,.GiftInfoPanel-cont .GiftInfoPanel-intro,.GiftInfoPanel-cont b,.GiftInfoPanel-cont span,#js-player-barrage .Barrage-content,.zixunRank-item .zixunRank-content,.videoList-item .name,.MedalPanelDiamondsInfo-info p,.MedalPanelDiamondsInfo-info h5,.FansHome-info p,.FansHome-info h5,.MedalOwnerInfo-title p,.MedalOwnerInfo-title a,.FansMedalPanel-info .FansMedalInfo-getTips,.FansMedalList-title .FansMedalInfo-titleL,.FansMedalList-title .FansMedalInfo-titleR,.AthenaBoothPanel-showMoreBtn,.Rank-tabHref,.u_header h1,.u_nav li a,.layout-Result,.layout-Search-feedback,.layout-Tab-item,.SearchAnchorVideo-title,.DyCover-intro,.SearchTopic-title,.Search-yuba .des .name,.Search-rank,.SearchHero-subTitle,.Search-recommend-info h3,.Search-category h3,.layout-Search-input>input,.Search-historyItem,.SearchRightFilter-label,.SearchChannel-item-detail-name,.News-newsTitle,.VideoRank-title,.HomePageClassify-celltitle,.footerCate-cateName,.Elevator-item,.ActivityItem-text h3,a.AnchorRank-link,.Aside-shrink-item,.Aside-nav-item,.Aside-menu-item,.Aside-menu-whole,.Aside-menu-title,.footerCate-cateItem>a,#dispop_time,.PlayerToolbar-wealthNum,.ListHeader-hero-header,.ListHeader-hero-content-tag,.Aside-nav-drop-name,.Aside-nav-drop-btn,.is-followed .Title-followText:nth-child(3)>i,.rank-item .rankInfo .rankValue,div.Barrage-message,.Search-topicRecommend .name{color:var(--theme-color1)}.ChatSend-txt,.Header a,.Header svg,.Header h5,.Header h2,.DropPaneList-title,.omnibusTitle,#js-header a.DropMenuList-linkAll,#js-header .uploadBtn span,.layout-Module-head .tabItem,.cate2TagB .cate2TagB-label,.DropMenuList-wrapper h3.DropMenuList-name,.customizeModal-title h3,.categoryTab-head .categoryTab-tab,.GroupEditPop-copy,.js-timeLine-wrap h3,.AnchorFriendPane-content h3,.AnchorFriendPane-content .AnchorFriend-footer a,.AnchorLike-friendList h3,.dy-ModalRadius-content h3,.YubaGroup-groupTitle span,.BackpackHeader-info--title,.BackpackHeader-info--desc,.BackpackInfoPanel-name,.Match-oneTitle,.indviduation-itemBox .userName,.indviduation-itemBox .name,.Dota2RankLevel-RankScore,.CSGORankLevel-RankScore,.wm-pc-room-cover-intro,.wm-pc-room-cover-hot,.wm-pc-room-cover-user,.wm-pc-room-cover-content>p,.ChatBarrageCollectPop-title,.FilterKeywords h3,.FKNokeywords-title,.BarrageWordPanel h3,.BarrageWordPanel-header h2,.BarrageWordPanel-card .BarrageWordPanel-tips,.VideoBottomTabs-box span,.AthenaBoothPanel-title,.AthenaBoothPanel-followBtn,.Barrage-EntranceIntroduce-Content,.Rank-kidLimitTxt,.Rank-content [class$="Rank-title"],.Rank-content [class$="RankList-name"],.Rank-content [class$="RankList-anickname"],.Rank-content [class$="RankList-weekNum"],.Rank-content [class$="RankList-weekTxt"],.Barrage-notice,.VideoReplayItem-date,.VideoAnchorItem-title,.Barrage-FansHome-content,.Search-anchor-info h3,.Search-create-info h3,.Search-upSmall-info h3,a.theme,.Search-feedback-section,.Search-input-title,.layout-Module-title>a,.layout-Module-title>div,.layout-Module-title>span,.game-countDown,.Search-yuba .des .num{color:var(--theme-color1) !important}.DyCover-user,.DyCover-hot,.Search-hotList-hot,.Search-rank-hot,.secondCateCard-hot,.Search-direct,.DyLiveCover-zone,.DyLiveRecord-zone,.DyLiveCover-user,.DyLiveCover-hot,.DyLiveRecord-user,.DyListCover-zone,.DyListCover-user,.DyListCover-hot,.DyListCover-btn.is-care,.DyRecCover-zone,.DyRecCover-userName,.DyRecCover-btn.is-care,a.FilterTabsV2-container,a.FilterTabsV2-container:hover,.Search-category p,.Search-anchor-info h4,.Search-upSmall-info p,.Search-create-info p,.Search-anchor-info p,.layout-Module-extra,.Match-msgType,.SearchCoverLable-item,.recommend-item .infoBox .recommend-name,.HeaderCell-label-wrap.is-live-empty,.Search-recommend-info>p,.Rank-content [class$="Rank-time"],.Rank-content [class$="Rank-desc"],.Rank-content [class$="RankList-score"],.Rank-content [class$="RankList-center"],.Rank-content [class$="RankList-fansNum"],.Rank-content [class$="RankList-catagory"],.Title-report,.Title-anchorText,.PlayerToolbar-wealthText,.ListHeader-hero-header-count,.Search-label,.Aside-nav-drop-item,.Aside-nav-drop-item:hover,.ChatSend-txt::placeholder{color:var(--theme-color2)}.layout-Module-empty,.Search-up-upCert,.DropPaneList-hot,.DropPaneList-name,.DropPaneList-time,.DropPaneList-videoTime,.DropPaneList-live,.Search-yuba table tr:first-child,.SearchTopic-brief,.SearchTopic-info,.Search-game-info p,.Search-game-info i,.Search-anchor-data,.Search-anchor-cate,.SearchAnchorVideo-time,.SearchChannel-item-detail-isCate,.AnchorFriendCard-description,.AnchorFriendCard-extra,.AnchorFriendCard-relationship.is-friend,.BackpackInfoPanel-exp b,.BackpackInfoPanel-intro,.kingRank-item .kingRankLevel .score,.kingRank-item .kingRankInfo .kingRankValue,.Search-content-title,.Search-default-title,.Search-history-title,.Search-hot-title,.Search-anchor.is-horizon .Search-anchor-info h4,.HoverCard-num,.HoverCard-scoredes,.HoverCard-footer,.AthenaBoothPanel-item p{color:var(--theme-color2) !important}.AnchorFriendPane-content .AnchorFriendCard-hot::before{content:"热度";width:32px}.Header-menu-link:hover a,.Header-menu-link:hover svg,.public-DropMenu-link:hover span,.public-DropMenu-link:hover svg,a.EntryNav-desc:hover span,.active a,.active svg,.Wallet-content-mywallet-wealth span,.DropPaneList:hover .DropPaneList-title,.layout-Module-head .tabItem:hover,.layout-Module-head .tabItem.active,.cate2TagB .cate2TagB-item:hover,.categoryBoxB-editB .edit:hover,.categoryTab-head .categoryTab-tab:hover,.categoryTab-head .categoryTab-tab.is-active,.Search-hotList .Search-direct:hover,.Search-hotList li .Search-hotList-kw:hover,.Search-suggestBoxContent .Search-direct:hover,.omnibusItem:hover .omnibusTitle,.ListRecommend-refresh:hover,.AllFollowPop-cates-followContainer-item:hover,.AllFollowPop-cates-itemcontainer-item:hover,.SortPop-cates-wrapper div:hover,.AllFollowPop-cates-followContainer .is-active,.SortPop-cates-wrapper div.is-active,.layout-Classify-card:hover strong,.categoryTab-list .categoryTab-item:hover,.Search-suggestBoxContent h3 .Search-keyword,.layout-Module-label--hasList:hover,.layout-Module-label:hover,.layout-Customization .game-item:hover .gameName,.layout-Customization .game-item:hover .gameTime,.layout-Customization .indviduation-itemTitle a:hover,.layout-Customization .recommend-item:hover .title,.Title-official .Title-officialName,.AnchorFriendPane-content .AnchorFriend-footer a:hover,.AnchorFriend-content .AnchorFriend-footer a:hover,.zixunRank-item:hover .zixunRank-content,.videoList-item .name:hover,.MedalOwnerInfo-title a:hover,.FansMedalList-title .FansMedalInfo-titleR:hover,.FilKeyTab .tab.active,.VideoBottomTabs-box span.cur,.wb_card-wbInfo-a7-LR a:hover,.AthenaBoothPanel-item:hover,.VideoAnchorItem:hover .VideoAnchorItem-title,.SearchTopic-wrap:hover .SearchTopic-title,a.theme:hover,.layout-Search-feedback:hover,.layout-Module-title>a:hover,a.AnchorRank-link:hover,.Search-history-title>a:hover{color:#ff5d23 !important}.AllFollowPop-cates,.dy-ModalRadius-content,.GroupEditPop-wrapper,.SearchRightFilter-pane{background-color:var(--theme-background-color1) !important;border:1px solid var(--theme-color1)}.FansMedalPanel-Panel{background-color:var(--theme-background-color2) !important;border:1px solid var(--theme-color1)}.FansMedalPanel-headerBg,.FansGiftPackage-headBg{display:none}.FansMedalPanel-enterMenu{margin-top:4px}.MedalPanelDiamondsInfo,.FansHome,#js-EmotionDiamondsPanel{background-image:none !important;background-color:var(--theme-background-color1) !important}div#js-EmotionDiamondsPanel::before{content:"钻粉专属表情";position:absolute;top:4px;left:34%;font-size:20px}.BackpackWrapper .FansGiftPackage{background-color:var(--theme-background-color2);height:160px}.FansGiftPackage-wrap{padding-top:15px;top:0}#ca_ul li .rb-label,#ca_ul li:last-child .rb-label{border-color:var(--theme-color1)}.rb-label{color:#999}.AnchorRankList-tipsContent{background-color:#ab8e8e !important}.Barrage-FansHome-notice,.HomePageClassify-cell,.hotCate-Wrapper{background-image:none !important}.layout-Nav-backTop{background-color:var(--theme-background-color2)}.layout-Nav-backTop:hover{background-color:#ff5d23}.Elevator-item:nth-child(odd),.AnchorRank-more{background-color:var(--theme-background-color4)}.AnchorFriendCard-hot:before{background-image:none;background:none}.Search-historyList>li,.Search-default-item,.Match-status0,.MatchRoom-label.is-empty,.SearchCoverLable-wrap.is-normal{color:var(--theme-color2);border:1px solid var(--theme-color2)}html::-webkit-scrollbar{width:10px;height:20px}html::-webkit-scrollbar-track{width:6px;background:var(--theme-background-color3);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}html::-webkit-scrollbar-thumb{background-color:var(--theme-color2);background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em;transition:background-color .3s;cursor:pointer}html::-webkit-scrollbar-thumb:hover{background-color:var(--theme-color2);opacity:0.5}#hand_dispop_box{border:1px solid var(--theme-color2,#999)}#hand_dispop_box:hover{box-shadow:1px 1px 5px 1px var(--theme-color2,#000)}#hand_dispop_box hr,.ca_table tr{border-color:var(--theme-color2,#ddd)}.Header-wrap,.layout-Player-title,.layout-Player-video,.layout-Player-toolbar,.layout-Player-asideMain{border:none !important}.layout-Player-asideMainTop{top:-1px;bottom:87px}';
/* 创建夜晚模式style */
let style_dark_mode = document.createElement('style');
style_dark_mode.innerHTML = dark_mode_css;
// 导航栏及直播间边框阴影
const live_boxshaodow_css = '.Header-wrap,.layout-Player-title,.layout-Player-video,.layout-Player-toolbar,.layout-Player-asideMain{box-shadow:1px 1px 5px 1px var(--theme-color2)}';
let style_live_boxshadow = document.createElement('style');
style_live_boxshadow.innerHTML = live_boxshaodow_css;
/* 各个隐藏css */
const hide_head_css = '.public-DropMenu.Video,.public-DropMenu.Game,.HeaderNav,.Header-download-wrap,.Header-createcenter-wrap,.Header-broadcast-wrap{display:none}';
const hide_aside_css = '.Aside-shrink-item[title="游戏"],.Aside-shrink-item[title="云游戏"],a.Aside-nav-item[href="https://wan.douyu.com"],a.Aside-nav-item[href="https://cloudgame.douyu.com"]{display:none}';
const hide_chattop_css = '.layout-Player-rank,.layout-Player-announce{display:none}.layout-Player-barrage{top:0}';
const hide_bottom_css = '.Bottom{display:none}';
const hide_guess_css = '.ToolbarActivityArea{display:none}';
const hide_level_css = '.Barrage-listItem .UserLevel,.Barrage-listItem img[class^="Supreme"],.Barrage-listItem .Barrage-noble,.Barrage-listItem .FansMedalBox,.Barrage-listItem .ChatAchievement,.Barrage-listItem .Barrage-roomVipIcon,.Barrage-listItem a.Baby,.Barrage-listItem .TeamFansMedalJSX,.Barrage-listItem .UserGameDataMedal,.MatchSystemTeamMedal{display:none !important}';
const hide_chattool_css = '.Horn4Category,.ChatNobleBarrage,.PopularBarrage,.BarrageWord{display:none !important}';
// 创建隐藏style
let style_hide_head = document.createElement('style');
style_hide_head.innerHTML = hide_head_css;
let style_hide_aside = document.createElement('style');
style_hide_aside.innerHTML = hide_aside_css;
let style_hide_chattop = document.createElement('style');
style_hide_chattop.innerHTML = hide_chattop_css;
let style_hide_bottom = document.createElement('style');
style_hide_bottom.innerHTML = hide_bottom_css;
let style_hide_guess = document.createElement('style');
style_hide_guess.innerHTML = hide_guess_css;
let style_hide_level = document.createElement('style');
style_hide_level.innerHTML = hide_level_css;
let style_hide_chattool = document.createElement('style');
style_hide_chattool.innerHTML = hide_chattool_css;
// 创建一个夜晚模式开关灯按钮
const cb_dark_mode_html = `
<input id="cb_dark_mode" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_dark_mode"></label>
`;
let cb_dark_mode_box = document.createElement('div');
cb_dark_mode_box.id = 'cb_dark_mode_box';
cb_dark_mode_box.title = '主题色-开/关';
cb_dark_mode_box.innerHTML = cb_dark_mode_html;
document.body.appendChild(cb_dark_mode_box);
// 创建一个“设置”按钮
const btn_setting_html = `
<svg t="1689689573324" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2559" width="32" height="32">
<path d="M919.6 405.6l-57.2-8c-12.7-1.8-23-10.4-28-22.1-11.3-26.7-25.7-51.7-42.9-74.5-7.7-10.2-10-23.5-5.2-35.3l21.7-53.5c6.7-16.4 0.2-35.3-15.2-44.1L669.1 96.6c-15.4-8.9-34.9-5.1-45.8 8.9l-35.4 45.3c-7.9 10.2-20.7 14.9-33.5 13.3-14-1.8-28.3-2.8-42.8-2.8-14.5 0-28.8 1-42.8 2.8-12.8 1.6-25.6-3.1-33.5-13.3l-35.4-45.3c-10.9-14-30.4-17.8-45.8-8.9L230.4 168c-15.4 8.9-21.8 27.7-15.2 44.1l21.7 53.5c4.8 11.9 2.5 25.1-5.2 35.3-17.2 22.8-31.7 47.8-42.9 74.5-5 11.8-15.3 20.4-28 22.1l-57.2 8C86 408 72.9 423 72.9 440.8v142.9c0 17.7 13.1 32.7 30.6 35.2l57.2 8c12.7 1.8 23 10.4 28 22.1 11.3 26.7 25.7 51.7 42.9 74.5 7.7 10.2 10 23.5 5.2 35.3l-21.7 53.5c-6.7 16.4-0.2 35.3 15.2 44.1L354 927.8c15.4 8.9 34.9 5.1 45.8-8.9l35.4-45.3c7.9-10.2 20.7-14.9 33.5-13.3 14 1.8 28.3 2.8 42.8 2.8 14.5 0 28.8-1 42.8-2.8 12.8-1.6 25.6 3.1 33.5 13.3l35.4 45.3c10.9 14 30.4 17.8 45.8 8.9l123.7-71.4c15.4-8.9 21.8-27.7 15.2-44.1l-21.7-53.5c-4.8-11.8-2.5-25.1 5.2-35.3 17.2-22.8 31.7-47.8 42.9-74.5 5-11.8 15.3-20.4 28-22.1l57.2-8c17.6-2.5 30.6-17.5 30.6-35.2V440.8c0.2-17.8-12.9-32.8-30.5-35.2z m-408 245.5c-76.7 0-138.9-62.2-138.9-138.9s62.2-138.9 138.9-138.9 138.9 62.2 138.9 138.9-62.2 138.9-138.9 138.9z"
fill="#17abe3" p-id="2560" data-spm-anchor-id="a313x.7781069.0.i13" class="selected"></path>
</svg>
`;
let btn_setting = document.createElement('div');
btn_setting.id = 'ca_btn_setting';
btn_setting.title = '设置';
btn_setting.innerHTML = btn_setting_html;
document.body.appendChild(btn_setting);
// 创建一个遮罩层及其内部的对话框
const overlay_dialog_html = `
<div id="ca_dialog">
<h2 style="margin-top: -4px;">设置(ClearAds)<a style="font-size: 12px; color: #17abe3; text-decoration: underline;" target="_blank" title="前往插件详情页面查看更多插件信息" href="https://greasyfork.org/zh-CN/scripts/470752">插件信息</a></h2>
<ul id="ca_ul">
<li><input id="tab1" type="radio" name="tab" checked><label id="rb-label1" class="rb-label" for="tab1">简化</label>
<div class="ca_content">
<table class="ca_table">
<tr title="简化隐藏顶部导航栏的部分内容">
<td>顶部导航栏-部分</td>
<td>
<div class="switch"><input id="ca_toggle1" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle1"></label></div>
</td>
</tr>
<tr title="隐藏侧边栏的游戏以及云游戏">
<td>侧边栏-游戏、云游戏</td>
<td>
<div class="switch"><input id="ca_toggle2" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle2"></label></div>
</td>
</tr>
<tr title="隐藏直播间聊天栏顶部的主播投稿视频、房间用户活跃度、贵宾等">
<td>直播间-聊天栏顶部</td>
<td>
<div class="switch"><input id="ca_toggle3" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle3"></label></div>
</td>
</tr>
<tr title="隐藏直播间底部鱼吧、友邻等内容">
<td>直播间-页面下方鱼吧等</td>
<td>
<div class="switch"><input id="ca_toggle4" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle4"></label></div>
</td>
</tr>
<tr title="隐藏直播间礼物栏旁的各种活动内容,包含预言竞猜">
<td>直播间-预言竞猜等</td>
<td>
<div class="switch"><input id="ca_toggle5" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle5"></label></div>
</td>
</tr>
<tr title="隐藏直播间聊天栏的等级、贵族牌、粉丝牌、成就、房间VIP、消息后缀图片等内容,但保留了房管标识">
<td>直播间-聊天栏等级等内容</td>
<td>
<div class="switch"><input id="ca_toggle6" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle6"></label></div>
</td>
</tr>
<tr title="隐藏直播间聊天发送框上面的部分内容,包括喇叭、贵族、梗、令等,保留了表情、粉丝弹幕与火力全开">
<td>直播间-发送框上方</td>
<td>
<div class="switch"><input id="ca_toggle7" class="ca_toggle ca_toggle-round" type="checkbox" checked><label for="ca_toggle7"></label></div>
</td>
</tr>
</table>
</div>
</li>
<li><input id="tab2" type="radio" name="tab"><label id="rb-label2" class="rb-label" for="tab2">功能</label>
<div class="ca_content">
<table class="ca_table">
<tr id="ca_theme_row">
<td colspan="2">
<div style="text-align: left; display: flex; flex-wrap: nowrap;">
<div style="flex-grow: 1; text-align: left;">主题色</div>
<div id="theme_container">
<input type="radio" name="theme" class="rb_theme_color" id="rb_theme_dark"
checked>
<label class="theme_color" id="theme_dark" for="rb_theme_dark" title="夜晚黑"></label>
<input type="radio" name="theme" class="rb_theme_color" id="rb_theme_pink">
<label class="theme_color" id="theme_pink" for="rb_theme_pink" title="少女粉"></label>
<input type="radio" name="theme" class="rb_theme_color" id="rb_theme_blue">
<label class="theme_color" id="theme_blue" for="rb_theme_blue" title="天空蓝"></label>
<input type="radio" name="theme" class="rb_theme_color"
id="rb_theme_deepdark">
<label class="theme_color" id="theme_deepdark"
for="rb_theme_deepdark" title="极致黑"></label>
</div>
<span id="ca_arrow_theme_more_option" class="ca_arrow_right">
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="18" height="18"
data-pointer="none" viewBox="0 0 16 16">
<path
d="m9.188 7.999-3.359 3.359a.75.75 0 1 0 1.061 1.061l3.889-3.889a.75.75 0 0 0 0-1.061L6.89 3.58a.75.75 0 1 0-1.061 1.061l3.359 3.358z">
</path>
</svg>
</span>
</div>
<div id="ca_theme_more_option">
<div style="display: inline-block">导航栏及直播间边框阴影</div>
<div class="switch" style="display: inline-block">
<input id="cb_shadow" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_shadow" style="box-shadow: none"></label>
</div>
</div>
</td>
</tr>
<tr title="进入直播间自动屏蔽刷屏消息">
<td>自动防刷屏(5分钟)</td>
<td>
<div class="switch">
<input id="cb_dispop" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_dispop"></label>
</div>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2">
<div id="hand_dispop_box">
<span title="手动开启防刷屏,当前防刷屏已开启的话请先点击关闭">手动开/关防刷屏</span><hr>
屏蔽<select name="times" id="dispop_time">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="5" selected>5</option>
<option value="8">8</option>
<option value="10">10</option>
</select>分钟之内的刷屏消息<br>
<button id="btn_hand_dispop" style="display: inline;" disabled>开启</button><button id="btn_cancel_dispop" style="display: inline;" disabled>关闭</button>
</div>
</td>
</tr>
<tr title="进入直播间自动网页全屏">
<td>自动网页全屏</td>
<td>
<div class="switch">
<input id="cb_auto_wfs" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_auto_wfs"></label>
</div>
</td>
</tr>
<tr title="进入直播间自动关闭弹幕">
<td>自动关闭弹幕</td>
<td>
<div class="switch">
<input id="cb_auto_cdm" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_auto_cdm"></label>
</div>
</td>
</tr>
<tr title="进入直播间自动选择当前直播间最高画质">
<td>自动选择最高画质</td>
<td>
<div class="switch">
<input id="cb_auto_shr" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_auto_shr"></label>
</div>
</td>
</tr>
<tr title="自动佩戴对应直播间的粉丝牌(如果已拥有)">
<td>自动佩戴粉丝牌</td>
<td>
<div class="switch">
<input id="cb_auto_wfm" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_auto_wfm"></label>
</div>
</td>
</tr>
<tr title="键盘功能增强,本功能开/关后需刷新页面以生效,请前往插件详情查看更多详情内容">
<td>键盘功能增强</td>
<td>
<div class="switch">
<input id="cb_keyboard" class="ca_toggle ca_toggle-round" type="checkbox" checked>
<label for="cb_keyboard"></label>
</div>
</td>
</tr>
</table>
</div>
</li>
</ul>
<div id="ca_btn_close"></div>
</div>
`;
let ca_overlay = document.createElement('div');
ca_overlay.id = 'ca_overlay';
ca_overlay.innerHTML = overlay_dialog_html;
document.body.appendChild(ca_overlay);
// 获取设置对话框等对象
let ca_dialog = document.getElementById('ca_dialog');
let ca_btn_close = document.getElementById('ca_btn_close');
// 给设置按钮添加点击事件
btn_setting.addEventListener('click', function () {
showca_dialog();
});
// 显示遮罩层和对话框
function showca_dialog() {
ca_overlay.style.display = 'flex';
}
// 隐藏遮罩层和对话框
function hideca_dialog() {
ca_overlay.style.display = 'none';
}
// 给遮罩层添加点击事件
// ca_overlay.addEventListener('click', function () {
// hideca_dialog();
// });
// 给关闭按钮添加点击事件
ca_btn_close.addEventListener('click', function () {
hideca_dialog();
});
/************************************获取插件添加的元素对象***************************************/
// 获取各个checkbox按钮对象
let cb_1 = document.getElementById('ca_toggle1');
let cb_2 = document.getElementById('ca_toggle2');
let cb_3 = document.getElementById('ca_toggle3');
let cb_4 = document.getElementById('ca_toggle4');
let cb_5 = document.getElementById('ca_toggle5');
let cb_6 = document.getElementById('ca_toggle6');
let cb_7 = document.getElementById('ca_toggle7');
// 主题色
let cb_dark_mode = document.getElementById('cb_dark_mode');
// 导航栏及直播间边框阴影
let cb_shadow = document.getElementById('cb_shadow');
// 防刷屏
let cb_dis_pop = document.getElementById('cb_dispop');
// 自动网页全屏
let cb_auto_wfs = document.getElementById('cb_auto_wfs');
// 自动关闭弹幕
let cb_auto_cdm = document.getElementById('cb_auto_cdm');
// 自动选择最高画质
let cb_auto_shr = document.getElementById('cb_auto_shr');
// 自动佩戴粉丝牌
let cb_auto_wfm = document.getElementById('cb_auto_wfm');
// 键盘功能增强
let cb_keyboard = document.getElementById('cb_keyboard');
// 获取两个手动开/关防刷屏的button对象
let btn_hand_dispop = document.getElementById("btn_hand_dispop");
let btn_cancel_dispop = document.getElementById("btn_cancel_dispop");
// 获取 theme 的 arrow more箭头
let arrow_theme_more_option = document.getElementById('ca_arrow_theme_more_option');
// 获取 theme 的 所有radiobutton
const radioContainer = document.getElementById('theme_container');
const radios = radioContainer.querySelectorAll('input[type="radio"]');
radios.forEach(radio => {
radio.addEventListener('change', function () {
if (this.checked) {
// 当前被选中的radiobutton的值
const selectedValue = this.id;
// 执行需要的操作
switch (selectedValue) {
case "rb_theme_dark": {
changeThemeColor(color_dark);
GM_setValue("theme_color", "dark");
break;
}
case "rb_theme_pink": {
changeThemeColor(color_pink);
GM_setValue("theme_color", "pink");
break;
}
case "rb_theme_blue": {
changeThemeColor(color_blue);
GM_setValue("theme_color", "blue");
break;
}
case "rb_theme_deepdark": {
changeThemeColor(color_deepdark);
GM_setValue("theme_color", "deepdark")
break;
}
default: {
break;
}
}
}
});
});
// 获取单个theme的radiobutton
let rb_theme_dark = document.getElementById('rb_theme_dark');
let rb_theme_pink = document.getElementById('rb_theme_pink');
let rb_theme_blue = document.getElementById('rb_theme_blue');
let rb_theme_deepdark = document.getElementById('rb_theme_deepdark');
/******************************************************************************************/
// 开启自动佩戴粉丝牌后隐藏掉斗鱼自带的佩戴提示框
let style_hide_wfm = document.createElement('style');
style_hide_wfm.innerHTML = '.FansMedalDialog{opacity:0;}';
/* 判断各个Value的值,即用户保存的设置(隐藏内容、开启的功能)*/
judgeGM_Value();
function judgeGM_Value() {
// 键盘功能增强
if (GM_getValue('is_keyboard')) {
cb_keyboard.checked = true;
} else {
cb_keyboard.checked = false;
}
// 主题色
if (GM_getValue('is_darked')) {
cb_dark_mode.checked = true;
document.head.appendChild(style_dark_mode);
// 主题色模式下 阴影
if (GM_getValue('is_shadowed')) {
document.head.appendChild(style_live_boxshadow);
} else {
style_live_boxshadow.remove();
}
} else {
cb_dark_mode.checked = false;
style_dark_mode.remove();
}
// 阴影
if (GM_getValue('is_shadowed')) {
cb_shadow.checked = true;
} else {
cb_shadow.checked = false;
}
// 切换已选主题色property
if (GM_getValue("theme_color")) {
switch (GM_getValue("theme_color")) {
case "dark": {
changeThemeColor(color_dark);
rb_theme_dark.checked = true;
break;
}
case "pink": {
changeThemeColor(color_pink);
rb_theme_pink.checked = true;
break;
}
case "blue": {
changeThemeColor(color_blue);
rb_theme_blue.checked = true;
break;
}
case "deepdark": {
changeThemeColor(color_deepdark);
rb_theme_deepdark.checked = true;
break;
}
}
}
// 直播间功能
if (document.querySelector('.layout-Player-aside')) {// 如果页面有侧边栏则该页面为直播间
console.log("【clearads】is live room");
// 键盘功能增强
if (GM_getValue('is_keyboard')) {
keydownEventHandle();
}
// 全屏自动隐藏插件按钮
// 监听 DOM 变化的方法
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
// 创建一个观察器实例
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
// 检查是否是 body 元素的类名发生变化
if (mutation.target === document.body && mutation.attributeName === 'class') {
if (document.body.classList.contains('is-fullScreenPage')) {
document.getElementById('ca_btn_setting').style.display = 'none';
document.getElementById('cb_dark_mode_box').style.display = 'none';
} else {
document.getElementById('ca_btn_setting').style.display = 'block';
document.getElementById('cb_dark_mode_box').style.display = 'block';
}
}
});
});
// 配置观察选项(只针对body元素本身类名,因此childList和subtree为False,尽量节省资源)
var config = { attributes: true, childList: false, subtree: false };
observer.observe(document.body, config);
// 自动网页全屏(fast)
if (GM_getValue('is_autowfs')) {
let notalive; // nal定时返回对象
// 【网页全屏1】先快速网页全屏
setTimeout(function () {
document.body.classList.add('is-fullScreenPage');
}, 3000);
// 如果该直播间 未开播
let nal_limit_time = 0;
notalive = setInterval(function () {
let obj_notalive = document.body.querySelector('[class^="labelDes-"]');
if (obj_notalive) {
if (document.body.classList.contains('is-fullScreenPage')) {
document.body.classList.remove('is-fullScreenPage');
}
clearInterval(notalive);
}
if (nal_limit_time > 10) {
clearInterval(notalive);
}
}, 1 * 1000); // 每1秒执行一次
}
// h5视频功能
if (GM_getValue('is_autowfs') || GM_getValue('is_autocdm') || GM_getValue('is_aotoshr')) {
let h5function; // 返回定时对象
// 【网页全屏2】然后再button网页全屏(修复原本需要两次双击才能退出的bug)
let h5function_limit_time = 0;
h5function = setInterval(function () {
let btn_wfs = document.body.querySelector('[class^="wfs-"]');
if (btn_wfs) { // 另外几个选项都是h5工具栏,因此只需要一个存在,其他的都存在
if (GM_getValue('is_autowfs')) {
// 自动网页全屏(enhance)
btn_wfs.click();
console.log("【ClearAds】auto webfullscreen success.");
}
if (GM_getValue('is_autocdm')) {
// 自动关闭弹幕
document.body.querySelector('[class^="showdanmu-"]').click();
console.log("【ClearAds】auto closedanmu success.");
}
if (GM_getValue('is_autoshr')) {
// 自动选择最高画质
document.body.querySelector('[class^="rate-"][title="清晰度"] ul>li').click();
console.log("【ClearAds】auto select highest rate success.");
}
// 清除定时
clearInterval(h5function);
}
if (h5function_limit_time > 10) {
clearInterval(h5function);
console.log("【ClearAds】h5 function open failed.");
}
h5function_limit_time++;
}, 1 * 1000); // 每1秒执行一次
}
// 自动防刷屏
if (GM_getValue('is_dispop')) {
setTimeout(function () {
disPop();
}, 5000);
} else {
btn_hand_dispop.disabled = false;
}
// 自动佩戴粉丝牌
if (GM_getValue('is_autowfm')) {
document.head.appendChild(style_hide_wfm);
let wearfansmedal_limit_time = 0;
let wfm = setInterval(function () {
let btn_wfm = document.body.querySelector('p.FansMedalDialog-wareMedal');
if (btn_wfm) {
btn_wfm.click();
clearInterval(wfm);
console.log("【ClearAds】auto wear fansmedal success.");
}
if (wearfansmedal_limit_time > 10) {
clearInterval(wfm);
console.log("【ClearAds】auto wear fansmedal failure.");
}
wearfansmedal_limit_time++;
}, 1 * 1000); // 每1秒执行一次
}
}
// cb 自动防刷屏
if (GM_getValue('is_dispop')) {
cb_dis_pop.checked = true;
} else {
cb_dis_pop.checked = false;
}
// cb 自动网页全屏
if (GM_getValue('is_autowfs')) {
cb_auto_wfs.checked = true;
} else {
cb_auto_wfs.checked = false;
}
// cb 自动关闭弹幕
if (GM_getValue('is_autocdm')) {
cb_auto_cdm.checked = true;
} else {
cb_auto_cdm.checked = false;
}
// cb 自动选择最高画质
if (GM_getValue('is_autoshr')) {
cb_auto_shr.checked = true;
} else {
cb_auto_shr.checked = false;
}
// cb 自动佩戴粉丝牌
if (GM_getValue('is_autowfm')) {
cb_auto_wfm.checked = true;
} else {
cb_auto_wfm.checked = false;
}
// 其他各个隐藏checkbox
if (GM_getValue('is_hide1')) {
cb_1.checked = true;
document.head.appendChild(style_hide_head);
} else {
cb_1.checked = false;
style_hide_head.remove();
}
if (GM_getValue('is_hide2')) {
cb_2.checked = true;
document.head.appendChild(style_hide_aside);
} else {
cb_2.checked = false;
style_hide_aside.remove();
}
if (GM_getValue('is_hide3')) {
cb_3.checked = true;
document.head.appendChild(style_hide_chattop);
} else {
cb_3.checked = false;
style_hide_chattop.remove();
}
if (GM_getValue('is_hide4')) {
cb_4.checked = true;
document.head.appendChild(style_hide_bottom);
} else {
cb_4.checked = false;
style_hide_bottom.remove();
}
if (GM_getValue('is_hide5')) {
cb_5.checked = true;
document.head.appendChild(style_hide_guess);
} else {
cb_5.checked = false;
style_hide_guess.remove();
}
if (GM_getValue('is_hide6')) {
cb_6.checked = true;
document.head.appendChild(style_hide_level);
} else {
cb_6.checked = false;
style_hide_level.remove();
}
if (GM_getValue('is_hide7')) {
cb_7.checked = true;
document.head.appendChild(style_hide_chattool);
} else {
cb_7.checked = false;
style_hide_chattool.remove();
}
} // function judgeGM_Value()
/******************* 为各个CheckBox添加点击事件*****************/
// 键盘功能增强cb
cb_keyboard.addEventListener("click", function () {
if (cb_keyboard.checked) {
GM_setValue('is_keyboard', true);
} else {
GM_setValue('is_keyboard', false)
}
});
// 主题色cb
cb_dark_mode.addEventListener("click", function () {
if (cb_dark_mode.checked) {
document.head.appendChild(style_dark_mode);
GM_setValue('is_darked', true);
if (GM_getValue('is_shadowed')) {
document.head.appendChild(style_live_boxshadow);
}
} else {
style_dark_mode.remove();
GM_setValue('is_darked', false);
style_live_boxshadow.remove();
}
});
// 主题色模式下 导航栏及直播间边框阴影 cb
cb_shadow.addEventListener("click", function () {
if (cb_shadow.checked) {
GM_setValue('is_shadowed', true);
if (GM_getValue('is_darked')) {
document.head.appendChild(style_live_boxshadow);
}
} else {
GM_setValue('is_shadowed', false);
if (GM_getValue('is_darked')) {
style_live_boxshadow.remove();
}
}
})
// 防刷屏cb
cb_dis_pop.addEventListener("click", function () {
if (cb_dis_pop.checked) {
GM_setValue('is_dispop', true);
} else {
GM_setValue('is_dispop', false);
}
});
// 自动网页全屏cb
cb_auto_wfs.addEventListener("click", function () {
if (cb_auto_wfs.checked) {
GM_setValue('is_autowfs', true);
} else {
GM_setValue('is_autowfs', false);
}
});
// 自动关闭弹幕
cb_auto_cdm.addEventListener("click", function () {
if (cb_auto_cdm.checked) {
GM_setValue('is_autocdm', true);
} else {
GM_setValue('is_autocdm', false);
}
})
// 自动选择最高画质
cb_auto_shr.addEventListener("click", function () {
if (cb_auto_shr.checked) {
GM_setValue('is_autoshr', true);
} else {
GM_setValue('is_autoshr', false);
}
})
// 自动佩戴粉丝牌cb
cb_auto_wfm.addEventListener("click", function () {
if (cb_auto_wfm.checked) {
GM_setValue('is_autowfm', true);
document.head.appendChild(style_hide_wfm);
} else {
GM_setValue('is_autowfm', false);
style_hide_wfm.remove();
}
});
// 其他CheckBox的点击事件
cb_1.addEventListener("click", function () {
if (cb_1.checked) {
document.head.appendChild(style_hide_head);
GM_setValue('is_hide1', true);
} else {
style_hide_head.remove();
GM_setValue('is_hide1', false);
}
});
cb_2.addEventListener("click", function () {
if (cb_2.checked) {
document.head.appendChild(style_hide_aside);
GM_setValue('is_hide2', true);
} else {
style_hide_aside.remove();
GM_setValue('is_hide2', false);
}
});
cb_3.addEventListener("click", function () {
if (cb_3.checked) {
document.head.appendChild(style_hide_chattop);
GM_setValue('is_hide3', true);
} else {
style_hide_chattop.remove();
GM_setValue('is_hide3', false);
}
});
cb_4.addEventListener("click", function () {
if (cb_4.checked) {
document.head.appendChild(style_hide_bottom);
GM_setValue('is_hide4', true);
} else {
style_hide_bottom.remove();
GM_setValue('is_hide4', false);
}
});
cb_5.addEventListener("click", function () {
if (cb_5.checked) {
document.head.appendChild(style_hide_guess);
GM_setValue('is_hide5', true);
} else {
style_hide_guess.remove();
GM_setValue('is_hide5', false);
}
});
cb_6.addEventListener("click", function () {
if (cb_6.checked) {
document.head.appendChild(style_hide_level);
GM_setValue('is_hide6', true);
} else {
style_hide_level.remove();
GM_setValue('is_hide6', false);
}
});
cb_7.addEventListener("click", function () {
if (cb_7.checked) {
document.head.appendChild(style_hide_chattool);
GM_setValue('is_hide7', true);
} else {
style_hide_chattool.remove();
GM_setValue('is_hide7', false);
}
});
/*********************more arrow 点击事件************ */
arrow_theme_more_option.addEventListener("click", function () {
let theme_row = document.getElementById('ca_theme_row');
theme_row.classList.toggle("show_more_option");
})
// 手动开、关防刷屏按钮点击事件
// 开启按钮点击事件
btn_hand_dispop.addEventListener("click", function () {
btn_hand_dispop.disabled = true;
let dispop_time = document.getElementById('dispop_time');
let select_index = dispop_time.selectedIndex;
let dispop_time_value = dispop_time.options[select_index].value
disPop(dispop_time_value);
});
// 关闭按钮点击事件
btn_cancel_dispop.addEventListener("click", function () {
btn_cancel_dispop.disabled = true;
btn_hand_dispop.disabled = false;
btn_hand_dispop.innerHTML = "开启";
clearInterval(clear_chatmsg); // 停止 => 循环清空消息屏蔽消息列表的
dispop_observer.disconnect(); // 停止 => 消息列表的监视
console.log("【ClearAds】防刷屏已手动关闭");
});
var clear_chatmsg;
var dispop_observer;
function disPop(time_min = 5) { //默认参数为5分钟
let chat_list = document.querySelector("#js-barrage-list");
let chatmsg = new Array();
if (chat_list) {
console.log('【ClearAds】防刷屏已开启.(屏蔽时间范围' + time_min + '分钟)');
btn_hand_dispop.innerHTML = "已开启";
btn_cancel_dispop.disabled = false;
// 创建 MutationObserver 对象
dispop_observer = new MutationObserver(function (mutations) {
// 遍历每个变化
mutations.forEach(function (mutation) {
// 遍历每个被添加的元素
mutation.addedNodes.forEach(function (node) {
// 判断节点元素
if (node.nodeType === 1 && node.nodeName === 'LI' && node.classList.contains('Barrage-listItem')) {
// 获取用户昵称对象
let username = node.querySelector(".Barrage-nickName");
// 获取用户消息内容对象
let usercontent = node.querySelector(".Barrage-content");
// 获取第用户昵称 文本内容
let usernameText = username.textContent.trim();
// 获取用户消息 文本内容
let usercontentText = usercontent.textContent.trim();
// 合并两个文本内容为一个字符串
let mergedText = usernameText + ":" + usercontentText;
if (chatmsg.includes(mergedText)) {
node.remove();
console.log('【ClearAds】 ' + mergedText + " --- " + new Date(Date.now()).toLocaleString());
// console.log('【ClearAds】remove chat message ok.');
} else {
chatmsg.push(mergedText);
}
}
});
});
});
// 配置 MutationObserver 对象
let config = { childList: true, subtree: true };
// 在聊天信息列表上开始监视变化
dispop_observer.observe(chat_list, config);
// 每5分钟清空数组
clear_chatmsg = setInterval(function () {
chatmsg.length = 0;
console.log("【ClearAds】chat message array cleared.");
}, time_min * 60 * 1000); // 5分钟
} else {
console.log("【ClearAds】因网络原因自动防刷屏未开启成功,请手动开启");
btn_hand_dispop.disabled = false;
}
} // disPop -- funciton
function keydownEventHandle() {
document.addEventListener('keydown', function (event) {
var target = event.target || event.srcElement;
if (target.tagName.toLowerCase() !== 'input' && target.tagName.toLowerCase() !== 'textarea') {
if (event.key === 'Enter') {
event.preventDefault();
// 聚焦直播间聊天输入框
document.querySelector('textarea.ChatSend-txt').focus();
}
if (event.key === 'Escape') {
event.preventDefault();
// 退出网页全屏
if (document.body.classList.contains('is-fullScreenPage')) {
document.querySelector('#room-html5-player [class^="wfs-exit-"]').click();
}
}
if (event.key === 'f') {
event.preventDefault();
// 全屏/取消全屏
document.querySelectorAll('#room-html5-player [class^="fs-"]').forEach(function (elem) {
if (!elem.classList.toString().includes('removed')) {
elem.click();
}
});
}
if (event.key === 'w') {
event.preventDefault();
// 网页全屏/取消网页全屏
if (document.body.classList.contains('is-fullScreenPage')) {
document.querySelector('#room-html5-player [class^="wfs-exit-"]').click();
} else {
document.querySelector('#room-html5-player [class^="wfs-"]').click();
}
}
if (event.key === 'm') {
event.preventDefault();
// 静音/取消静音
document.querySelector('#room-html5-player [class^="volume-"]').click();
}
if (event.key === 'r') {
event.preventDefault();
// 重新加载直播
document.querySelector('#room-html5-player [class^="reload-"]').click();
}
if (event.key === 'd') {
event.preventDefault();
// 开关弹幕
if (document.querySelector('#room-html5-player [class^="hidedanmu-"]').classList.toString().includes('removed')) {
document.querySelector('#room-html5-player [class^="showdanmu-"]').click();
} else {
document.querySelector('#room-html5-player [class^="hidedanmu-"]').click();
}
}
if (event.key === 's') {
event.preventDefault();
// 打开设置
document.querySelector('#ca_overlay').style.display = "flex";
}
} else {
if (event.key === 'Escape') {
event.preventDefault();
// 取消聚焦聊天输入框
target.blur();
}
}
});
} // function keydownEventHandle()键盘事件处理
function changeThemeColor(theme_color) {
const root = document.documentElement;
root.style.setProperty('--theme-background-color1', theme_color[0]);
root.style.setProperty('--theme-background-color2', theme_color[1]);
root.style.setProperty('--theme-background-color3', theme_color[2]);
root.style.setProperty('--theme-background-color4', theme_color[3]);
root.style.setProperty('--theme-color1', theme_color[4]);
root.style.setProperty('--theme-color2', theme_color[5]);
} // function changeThemeColor()更改颜色
} // onload -- function
})(); // 主function -- function
}; // 最外层判断当前页面是否是主页面