// ==UserScript==
// @name 删除b站垃圾板块-改
// @namespace https://github.com/lossj
// @include https://www.bilibili.com
// @version 0.5.2
// @description 删除b站首页广告、特定垃圾板块。
// @author Loss J.
// @match https://www.bilibili.com
// @match https://www.bilibili.com/?*
// @grant none
// ==/UserScript==
(function(){
'use strict';
function hideAds(){
// 删除顶部分区目录下的banner
document.getElementById("reportFirst1").style.display = "none";
// 删除banner下的推广
document.getElementById("reportFirst2").style.display = "none";
// 删除英雄联盟推广
var report3 = document.getElementById("reportFirst3");
if (report3 != null){
report3.style.display = "none";
}
}
var nameList = ["直播", "动画", "番剧", "国创", "漫画", "音乐", "舞蹈", "游戏",
"知识", "课堂", "数码", "生活", "鬼畜", "时尚", "资讯", "娱乐",
"专栏", "电影", "电视剧", "影视", "纪录片", "特别推荐"];
var idList = ["bili_live", "bili_douga", "bili_anime", "bili_guochuang", "bili_manga", "bili_music", "bili_dance", "bili_game",
"bili_technology", "bili_cheese", "bili_digital", "bili_life", "bili_kichiku", "bili_fashion", "bili_information", "bili_ent",
"bili_read", "bili_movie", "bili_teleplay", "bili_cinephile", "bili_documentary", "bili_report_spe_rec"];
// 设置要屏蔽的up主的名字
var sbUploaderNames = new Set(["papi酱", "凉风Kaze", "拜托了小翔哥", "贤宝宝Baby", "记录生活的蛋黄派",
"硬核的半佛仙人", "啊吗粽", "盖里老哥", "敬汉卿", "哔哩哔哩英雄联盟赛事",
"英雄联盟", "说唱新世代", "不2不叫周淑怡", "LexBurner", "上海滩许Van强",
"仙道居士", "-星辰菌-", "特效小哥studio", "长又心", "在下哲别", "女胖胖",
"老番茄", "机智的党妹", "逗比的雀巢", "Super也好君", "不死な千咲", "敖厂长",
"Baka恶魔", "拯救世界的狗子", "花少北丶", "linkmusicnow", "浅澄月", "十代冥王",
"小潮院长", "狗辉大师", "陈家淇_B11", "某幻君", "Python_子木", "木鱼水心",
"岚鸽鸽不鸽鸽", "红豆稀饭中", "沈逸老师", "东尼ookii", "小潮院长", "Ksr桑",
"vansamaofficial", "嬉皮怪客", "卧龙寺", "Easrfa", "蜻蜓隊長い", "广西吴恩师",
"最绅士Yuppie", "华农兄弟", "赤焰男孩", "宝剑嫂", "vivi可爱多", "面筋哥-程书林",
"雨哥到处跑"]);
var name2id = {}
for (var i = 0; i < nameList.length; i++){
var value = [idList[i], i]
name2id[nameList[i]] = value;
}
// 设置你要屏蔽的板块
var garbageBlocks = ["动画", "国创", "漫画", "游戏", "课堂", "鬼畜", "娱乐", "专栏", "影视", "特别推荐"]
var idSet = new Set([])
for (var k = 0; k < garbageBlocks.length; k++){
idSet.add(name2id[garbageBlocks[k]]);
}
function hideBlock(){
for (var i = 0; i < garbageBlocks.length; i++){
if (garbageBlocks[i] != "特别推荐"){
document.getElementById(name2id[garbageBlocks[i]][0]).style.display = "none";
// document.getElementById(name2id[garbageBlocks[i]][0]).remove();
}else{
try{
document.getElementById(name2id[garbageBlocks[i]][0]).style.display = "none";
}catch{}
}
}
}
function funcSleep(func, time, limitTime=5){
try{
setTimeout(func, time);
}catch{
if (limitTime > 0){
funcSleep(func, time, limitTime=limitTime-1);
}else{
console.log("Can't find Element!")
}
}
}
// 删除右侧固定分区导航条
function hideElevator(){
var item = document.querySelectorAll("#elevator > .list-box > div .item");
for(var i = 0; i < garbageBlocks.length; i++){
if(garbageBlocks[i] != "特别推荐"){
var idx = name2id[garbageBlocks[i]][1];
item[idx].style.display = "none";
}
}
}
// 删除直播板块右侧banner广告
function hideLiveAds(){
var tabContents = document.querySelectorAll(".live-tabs > div");
tabContents[3].style = "display: none;";
tabContents[2].style = "";
var tabs = document.querySelectorAll(".live-tabs .tab-switch-item");
tabs[2].remove();
tabs[1].className += " on";
}
// 删除直播板块指定标签外的直播间
function hideLiveRoom(){
var reporter = document.getElementById('bili_report_live');
reporter.remove();
}
function clickBtn(){
var btn = document.querySelector(".live-list .btn-change");
function sleepHideLiveRoom(){
funcSleep(hideLiveRoom, 600);
}
btn.addEventListener('click', sleepHideLiveRoom, false);
}
// 删除sb up主的视频
function hideSbUploader(){
var wraps = document.querySelectorAll(".rank-list .rank-wrap");
for (var i = 0; i < wraps.length; i++){
try{
var name = wraps[i].querySelector(".popover-video-card > .content > .info > .subtitle > .name").textContent;
if(sbUploaderNames.has(name)){
if(wraps[i].style.display != "none"){
wraps[i].style.display = "none";
}
}
}catch{}
}
var videoCards = document.querySelectorAll(".video-card-common");
for (var j = 0; j < videoCards.length; j++){
if (idSet.has(videoCards[j].parentNode.parentNode.parentNode.id)){
}else{
var uploader = videoCards[j].querySelector("a.up");
if(uploader){
var uploaderName = uploader.querySelector("i").nextSibling.textContent;
uploaderName = uploaderName.trim();
if(sbUploaderNames.has(uploaderName)){
if(videoCards[j].style.display != "none"){
videoCards[j].style.display = "none";
}
}
}
}
}
}
var scrollAllow = true;
function scrollEvent(e){
function scrollAwake(){
scrollAllow = true;
}
e = e || window.event;
if (scrollAllow && e.wheelDelta) {
if (e.wheelDelta < -30) {
scrollAllow = false;
funcSleep(hideSbUploader, 1500);
setTimeout(scrollAwake, 2000);
}
} else if (scrollAllow && e.detail) {
if (e.detail < -30) {
scrollAllow = false;
funcSleep(hideSbUploader, 1500);
setTimeout(scrollAwake, 2000);
}
}
}
function main(){
hideAds();
var time = 1500;
funcSleep(hideElevator, time);
funcSleep(hideBlock, 1000);
funcSleep(hideLiveAds, 900);
funcSleep(hideLiveRoom, 1000);
funcSleep(hideSbUploader, 5500);
window.onmousewheel = document.onmousewheel = scrollEvent;
console.log("okokok");
funcSleep(clickBtn, 1000);
}
main()
})();