您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Block specific live rooms on Bilibili.
// ==UserScript== // @name Bilibili直播间屏蔽 // @namespace https://github.com/2Jelly2/Bilibili-Live-Room-Blacklist // @version 0.08 // @description Block specific live rooms on Bilibili. // @author 時計坂しぐれ // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @match https://live.bilibili.com/p/eden/area-tags* // ==/UserScript== ( function() { 'use strict'; // Manually enable or disable this script to block all anchors who belong to Majo Company according to collected list //GM_setValue("majoBan", true); // Live rooms which you want to block // Note that once this script runs, the following rooms will be added to blacklist permanently // To remove rooms from the blacklist, please add targeted live room number to following constant 'blacklistRemoved' const blacklist = new Set ( [ 1000000000000, // Samples, replace with live room number 1010101010101, 1001001001001 ] ); // Live rooms which will be excluded from blocking const whitelist = new Set ( [ //1000000000000, //1010101010101, 1001001001001 ] ); // Live rooms which will be removed from blacklist // Privior to 'blacklist' const blacklistRemoved = new Set ( [ //1010101010101, //1001001001001, 1000000000000 ] ); //creatMenu(); const blocklist = generateList(); var startRoom = 0; patrol(); const observer = new MutationObserver(function (mutations){ patrol(); }); observer.observe(document.body, { childList: true, subtree: true }); function creatMenu() { GM_registerMenuCommand("test", null); } function generateList() { const blocklistOLD = GM_getValue("blocklist"); let blocklist = new Set([...(blocklistOLD == undefined ? new Set([]) : new Set(blocklistOLD)), ...blacklist].filter(x => !blacklistRemoved.has(x))); GM_setValue("blocklist", [...blocklist]); console.log(blocklist); let majoBan = GM_getValue("majoBan"); if(majoBan == null) { GM_setValue("majoBan", majoBan = confirm("是否屏蔽所有已知魔女公司旗下主播?\n(仅收集了部分名单,且不保证准确性)")); } if(majoBan) // TBD: Full-day AI anchor list? { const majoList = new Set // TBD: Separate list source? Low latency (Cloud Object-Storage?) or low frequency (timer?)? ( [ //Majo 21725187, //子花酱Hanako 21721967, //椎名真绪 3408715, //巧克力 815973, //钱二两 - 永久封禁, //Messiah 1944820, //切茜娅 1038, //小伞一把 26283, //小伞一把 22014628, //五月织姬 3858888, //伊月猫凛 21718578, //百草姬 681554, //茗魂 21691719, //弥祢兔 22243501, //可可拉 //MajoSP 634585, //露露·C·娜塔莉娅 777581, //游莲 33592, //希露卡 14897638, //樱吹雪 2292462, //物理魔法使哈娜酱 //Croven 41035, //竹糯 21718895, //曼德萝草 2241806, //戈洛 251015, //黑泽诺亚 21737386, //塔克 21838119, //初鹿野乐 22115191, //切羽 713972, //星谷实花 25097, //幽游 7202100, //溯月 873642, //里奈 22143763, //裔书 22131380, //巴克 //三垣四象 21627660, //小青龙 - 更名:小青草Official 7554620, //风从虎 22087280, //天使垣 22403613, //钟馗 22397790, //紫天垣 21706700, //腾心 22193637, //勾陈须 - 更名:唯啾 21775372, //烛龙 - 前中之人? 22329990, //大微垣 //太微垣 21993453, //朱九儿 = 鳳姫ちゃん //玄鸡 22282330, //心月狐 //房日兔 //EroS 782436, //费不燎 302138, //林岳风 //Wonderland 540024, //粉黛乱子 22210372, //香取绮罗_Kira 9711880, //米呦Miyu 2659281, //乌月 3279447, //塔尔斯 4066032, //安奈るり 1689550, //凰裳(Twinkle_凰裳) 22210805, //居居喵 21921854, //路卡 409538, //黑白 //曙光 12081986, //将离 21879412, //雷柏磷 4012961, //S1娘 22256250, //与朵小天使 3595055, //咕噜大魔王 22480197, //光冥 718548, //默磷 22477194, //白云藻 //DDL //AW$L //Virtual Union 22816111, //东雪莲 22608112, //希亚娜Ciyana 22384516, //呜米 8792912, //咩栗 318, //还有醒着的么 22824550, //罗菈Rola 88615, //奈姬niki 3415150, //奈姬niki 22348429, //赫卡Tia 22700040, //露珀塔 //Others 740330, //玥之冰 21636874, //鸢尾Alina 21925057, //尤菲黎娅 5659489, //樱谷响是螂螂 1653312, //夜德奈奈 13407, //晓月朔夜 3538158, //小怪受 28094172, //香草莓巧子 1508300, //维斯蒂亚 779207, //王剑Official 21690710, //铁寒生 3725076, //特莉丝忒 21740743, //桃里莲弥Renya 21516855, //太皮鹿 21582212, //苏怡之 4918903, //霜羽 454068, //山雀Aile 755940, //山崎kaori 15802, //三千宫魔王Miya 22232890, //乔微微 632168, //栖酒SAKEKO 21863446, //普通de办公室 1256455, //片桐泉 305788, //奈丽莎卡里乌斯 21875486, //霂暮杺 56064, //魔王YALU 21195828, //魔法少女乐府酱 21648286, //璐比Channel 2064239, //鹿野灸 22027710, //蓝波Iamb 213308, //军师-RandF 21291286, //镜像组 427931, //静夜夜 364180, //金龙胧月 4145448, //红茶Asmodeus 3429937, //鹤崎泷_TakiChannel 21823053, //古见月FurumiLuna 3204380, //废宅多多 91041, //断手猫 2313, //电流妹Delia 710449, //丹羽加奈 //3765033, //超危蓝猫可可亚 - 不属实:https://ngabbs.com/read.php?tid=24065790&page=8#pid523640757Anchor 27334, //草翦葱 142572, //柄柄ちゃん 5701155, //彼岸sama_siki 21582212, //北山大王-苏怡之 21772345, //白小宛_official 3408715, //白岛と巧克力 68708, //爱实 906914, //艾瑞克_艾宾浩斯 157501, //艾露ミアナ 21645790, //阿涅4N1E 892432, //po芽那 1282429, //Piquer 14319044, //若月桂 384688, //松下枭太Official - 更名:星野泽Hoshino 2809226, //没腿笼屉 - 更名:带娃笼屉Channel //21418775, //白鸟穹 - 已退出:https://ngabbs.com/read.php?tid=24107967 8069831, //白鹿与角鸱Official - 更名:安德烈-赫岑朵夫Official 22262300, //人间蜜药 12845193, //鸢尾牙牙Yamia 569341, //香草莓巧子Machoke 9202763, //默然-mory 872551, //电鸟个灯泡 22495291, //妙妙子Official //一酱 - ? //玄懿 - ? //星·小 - ? //十月 - ? //燃 - ? //趴熊 - ? //南瓜子 - ? //莫维害行 - ? //梦影 - ? //奇姬LilyPop - 无直播间 / uid=485407858 //泷泽寒-official - 毕业? //尤莉艾露 - 毕业? //悠奈Yuli - 毕业? 5633244 //世寒 - 毕业 ] ); blocklist = new Set([...blocklist, ...majoList]); } let aSoulBan = GM_getValue("aSoulBan"); if(aSoulBan == null) { GM_setValue("aSoulBan", aSoulBan = confirm("是否屏蔽所有已知乐华A-Soul旗下主播?\n(不保证准确性)")); } if(aSoulBan) { const aSoulList = new Set ( [ 22632157, //AS Official 22625027, //乃琳Queen 22637261, //嘉然今天吃什么 22634198, //珈乐Carol 22632424, //贝拉kira 22625025 //向晚大魔王 ] ); blocklist = new Set([...blocklist, ...aSoulList]); } blocklist = new Set([...blocklist].filter(x => !whitelist.has(x))); console.log(blocklist); return blocklist; } function roomList() { return document.getElementById("area-tag-list").querySelectorAll("a#card"); } function patrol() { let objects = roomList() for (let i = startRoom; i < objects.length; i ++) { let roomNumber = objects[i].pathname; roomNumber = roomNumber.replace('/', ''); for(let roomToBeBlock of blocklist) { if(roomNumber == roomToBeBlock) { objects[i].parentElement.removeChild(objects[i]); console.log(roomNumber + " blocked"); } } } startRoom = roomList().length; } } )();