// ==UserScript==
// @name (改)B站成分检测器
// @version 2.0.1
// @author hmjz100,xulaupuz,trychen
// @namespace github.com/hmjz100
// @license GPLv3
// @description 《也许同类型中最好用?》系列 - B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别,默认标注包括抽奖、原神、崩坏3、崩坏星穹铁道、绝区零、鸣潮、战双帕弥什、少女前线、少女前线2、明日方舟、碧蓝航线、碧蓝档案、尘白禁区、NIKKE胜利女神、VTuber、Asoul、王者荣耀、和平精英、三国杀、Minecraft、迷你世界、初生科技、Roblox、火影忍者、暗区突围、香肠派对、穿越火线、地下城与勇士、绝地求生、英雄联盟、魔兽世界、CSGO、第五人格、蛋仔派对、GLITCH、彩虹六号:围攻、小马宝莉、孙笑川258、学生、互助。
// @homepage https://github.com/hmjz100/bilibili-comment-checker/
// @supportURL https://github.com/hmjz100/bilibili-comment-checker/issues
// @match *://*.bilibili.com/*
// @icon data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A1qEAANahAADWoQAG1qEAb9ahAMvWoQD01qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD01qEAy9ahAG/WoQAG1qEAANahAADWoQAA1qEAG9ahAM/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahANDWoQAb1qEAANahAAfWoQDQ1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahANHWoQAH1qEAbtahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAG7WoQDH1qEA/9ahAP/WoQD/1qEAtdahABjWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahABvWoQC11qEA/9ahAP/WoQD/1qEAx9ahAPnWoQD/1qEA/9ahAP/WoQAZ1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahABjWoQD/1qEA/9ahAP/WoQDz1qEA/9ahAP/WoQD/1qEA/9ahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAErWoQDn1qEA5NahAErWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAErWoQDn1qEA5NahAErWoQAA1qEAANahAADWoQAA1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEA5tahAP/WoQD/1qEA59ahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEA5tahAP/WoQD/1qEA59ahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEA5tahAP/WoQD/1qEA5tahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEA5tahAP/WoQD/1qEA5tahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAADWoQAA1qEAANahAADWoQBJ1qEA5tahAObWoQBJ1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQBJ1qEA5tahAObWoQBJ1qEAANahAADWoQAA1qEAANahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQD/1qEA/9ahAP/WoQD/1qEA+dahAP/WoQD/1qEA/9ahABnWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAGdahAP/WoQD/1qEA/9ahAPjWoQDH1qEA/9ahAP/WoQD/1qEAttahABnWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahABnWoQC21qEA/9ahAP/WoQD/1qEAx9ahAG3WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQBt1qEABtahAM/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA0NahAAfWoQAA1qEAG9ahAM/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAM/WoQAb1qEAANahAADWoQAA1qEABtahAG7WoQDH1qEA89ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA/9ahAP/WoQD/1qEA89ahAMfWoQBu1qEABtahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEADtahAMXWoQD/1qEA/9ahAP/WoQD/1qEAxdahAA/WoQAA1qEAANahAADWoQAA1qEADtahAMXWoQD/1qEA/9ahAP/WoQD/1qEAxdahAA/WoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAAbWoQDF1qEA/9ahAP/WoQD/1qEA/9ahAMXWoQAP1qEAANahAADWoQAA1qEAANahAADWoQAA1qEADtahAMXWoQD/1qEA/9ahAP/WoQD/1qEAxdahAAbWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAYtahAP/WoQD/1qEA/9ahAP/WoQDF1qEADtahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEADtahAMXWoQD/1qEA/9ahAP/WoQD/1qEAY9ahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQBf1qEA/9ahAP/WoQD/1qEAxdahAA7WoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEADtahAMXWoQD/1qEA/9ahAP/WoQBf1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAATWoQCg1qEA6tahAKjWoQAO1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEAANahAADWoQAA1qEADtahAKjWoQDr1qEAoNahAATWoQAA1qEAANahAADWoQAA1qEAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A///////////AAAADgAAAAQAAAAAAAAAAA///wAf//+AP///wD///8A////AP///wDw/w8A8P8PAPD/DwDw/w8A8P8PAPD/DwD///8A////AH///gA///wAAAAAAAAAAAgAAAAcAAAAP8A8A/+AfgH/gP8B/4H/gf+D/8H/////8=
// @connect bilibili.com
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @grant GM.xmlHttpRequest
// @grant GM_registerMenuCommand
// @grant GM_getResourceText
// @grant unsafeWindow
// @require https://unpkg.com/jquery@3.6.0/dist/jquery.min.js
// @require https://unpkg.com/sweetalert2@11/dist/sweetalert2.min.js
// @resource Swal https://unpkg.com/sweetalert2@11/dist/sweetalert2.min.css
// @resource SwalDark https://unpkg.com/@sweetalert2/theme-dark@5/dark.min.css
// ==/UserScript==
$(function BiliChecker() {
// 是否在控制台显示错误消息
let debug = false;
/**
* 注释~
* 在这里配置要检查的成分,或者直接拉黑(使用指定UID评论的人会被直接添加标签)。
* 假设你要直接给指定UID添加一个标签的话,就这样写:blacklist: [1234567890,0987654321]
* 成分列表后有一个 支持含注释快速排序UID 的函数,到了那里,您可以查看相关使用说明
* 借此脚本守护我们最好的噼里啪啦捏~
*/
const checkers = [
{
displayName: "抽奖",
displayIcon: "🎁",
keywords: ["互动抽奖", "转发本条动态"],
},
{
displayName: "原神",
displayIcon: "https://i0.hdslb.com/bfs/face/d2a95376140fb1e5efbcbed70ef62891a3e5284f.jpg@100w_100h.webp",
keywords: ["互动抽奖 #原神", "#原神", "原神", "芙宁娜", "白术", "赛诺", "神里绫人", "神里绫华", "夏洛蒂", "珊瑚宫", "九条裟罗", "班尼特", "夜阑", "那维莱特", "枫原万叶", "万叶", "钟离", "纳西妲", "香菱", "八重神子", "久岐忍", "菲谢尔", "艾尔海森", "胡桃", "林尼", "达达利亚", "提纳里", "宵宫", "莫娜", "甘雨", "罗莎莉亚", "刻晴", "九条裟罗", "温迪", "阿贝多", "云堇", "芭芭拉", "迪卢克", "烟绯", "重云", "雷泽", "凝光", "坎蒂丝", "辛焱"],
followings: [401742377] // 原神官方号的 UID
},
{
displayName: "崩坏3",
displayIcon: "https://i0.hdslb.com/bfs/face/f861b2ff49d2bb996ec5fd05ba7a1eeb320dbf7b.jpg@100w_100h.webp",
keywords: ["互动抽奖 #崩坏3", "#崩坏3", "崩坏3", "德丽莎", "温蒂"],
followings: [27534330] // 崩坏3官方号的 UID
},
{
displayName: "崩坏星穹铁道",
displayIcon: "https://i0.hdslb.com/bfs/face/57b6e8c16b909a49bfc8d8394d946f908cabe728.jpg@100w_100h.webp",
keywords: ["互动抽奖 #崩坏星穹铁道", "#崩坏星穹铁道", "#星穹铁道", "崩坏星穹铁道", "星铁", "崩铁"],
followings: [1340190821] // 崩坏星穹铁道官方号的 UID
},
{
displayName: "绝区零",
displayIcon: "https://i0.hdslb.com/bfs/face/049b47e0e73fc5cc1564343bb0aeacce8ae8e6f8.jpg@100w_100h.webp",
keywords: ["互动抽奖 #绝区零", "#绝区零", "#绝区零公测", "绝区零"],
followings: [1636034895] // 绝区零官方号的 UID
},
{
displayName: "鸣潮",
displayIcon: "https://i0.hdslb.com/bfs/face/0abd6b9df304334a9388e968740b5b9b7d1a84be.jpg@100w_100h.webp",
keywords: ["互动抽奖 #鸣潮", "#鸣潮", "#鸣潮长离", "鸣潮"],
followings: [1955897084] // 鸣潮官方号的 UID
},
{
displayName: "战双帕弥什",
displayIcon: "https://i0.hdslb.com/bfs/face/29d40886bc649fd2b81793c17077728820d411b6.jpg@100w_100h.webp",
keywords: ["互动抽奖 #战双帕弥什", "#战双帕弥什", "#剪身成蝶", "战双帕弥什"],
followings: [382651856] // 战双帕弥什官方号的 UID
},
{
displayName: "少女前线",
displayIcon: "https://i0.hdslb.com/bfs/face/667e4b1ca39300bff0672774f1980c02c2353b11.jpg@100w_100h.webp",
keywords: ["互动抽奖 #少女前线", "#少女前线", "#零电荷", "少女前线"],
followings: [
32472953, // 少女前线官方号的 UID
266017919 // 少女前线后勤组的 UID
]
},
{
displayName: "少女前线2",
displayIcon: "https://i0.hdslb.com/bfs/face/427f8dde32e18465a723f7c7216340c2013d595d.jpg@100w_100h.webp",
keywords: ["互动抽奖 #少前2", "#少前2#", "少女前线2", "少前2"],
followings: [697654195] // 少女前线2官方号的 UID
},
{
displayName: "明日方舟",
displayIcon: "https://i0.hdslb.com/bfs/face/d4005a0f9b898d8bb049caf9c6355f8e8f772a8f.jpg@100w_100h.webp",
keywords: ["明日方舟", "#明日方舟"],
followings: [161775300] // 明日方舟官方号的 UID
},
{
displayName: "碧蓝航线",
displayIcon: "https://i0.hdslb.com/bfs/face/1fd5b43d5f619e6df8c8adcf13c962a3e80ee971.jpg@100w_100h.webp",
keywords: ["碧蓝航线", "#碧蓝航线", "#舰船新增#"],
followings: [233114659] // 碧蓝航线官方号的 UID
},
{
displayName: "碧蓝档案",
displayIcon: "https://i0.hdslb.com/bfs/face/f2635e09fe667d4ad29229c6ed0b5f4bdea09bd1.jpg@100w_100h.webp",
keywords: ["碧蓝档案", "#碧蓝档案"],
followings: [3493265644980448] // 碧蓝档案官方号的 UID
},
{
displayName: "尘白禁区",
displayIcon: "https://i0.hdslb.com/bfs/face/e2a7e30399860cfa7c1ec5c958ab9e519290e181.jpg@100w_100h.webp",
keywords: ["尘白禁区", "#尘白禁区"],
followings: [1409863611] // 尘白禁区官方号的 UID
},
{
displayName: "NIKKE胜利女神",
displayIcon: "https://i0.hdslb.com/bfs/face/cc690158528967d1c57586290e3be57edd4e6e47.jpg@100w_100h.webp",
keywords: ["NIKKE", "胜利女神"],
followings: [1972404330] // NIKKE情报站的 UID
},
{
displayName: "VTuber",
displayIcon: "https://i0.hdslb.com/bfs/face/d399d6f5cf7943a996ae96999ba3e6ae2a2988de.jpg@100w_100h.webp",
keywords: ["雪蓮", "塔菲", "七海", "草莓猫", "嘉然", "乃琳", "珈乐", "贝拉"],
followings: [
351609538, // 珈乐Carol
434334701, // 七海Nana7mi
672328094, // 嘉然今天吃什么
672342685, // 乃琳Queen
672346917, // 向晚大魔王
672353429, // 贝拉kira
1210816252, // 草莓猫Taffy
1265680561, // 永雏塔菲
1437582453, // 東雪蓮Official
]
},
{
displayName: "Asoul",
displayIcon: "https://i0.hdslb.com/bfs/face/43b21998da8e7e210340333f46d4e2ae7ec046eb.jpg@100w_100h.webp",
keywords: ["@A-SOUL_Official", "#A_SOUL#"],
followings: [
703007996, // Asoul
547510303, // Asoul二创计画
672328094, // 嘉然今天吃什么
672342685, // 乃琳Queen
351609538, // 珈乐Carol
672346917, // 向晚大魔王
672353429, // 贝拉kira
]
},
{
displayName: "王者荣耀",
displayIcon: "https://i0.hdslb.com/bfs/face/effbafff589a27f02148d15bca7e97031a31d772.jpg@100w_100h.webp",
keywords: ["互动抽奖 #王者荣耀", "#王者荣耀", "王者荣耀"],
followings: [
57863910, // 王者荣耀官方号的 UID
392836434, // 哔哩哔哩王者荣耀赛事
]
},
{
displayName: "和平精英",
displayIcon: "https://i0.hdslb.com/bfs/game/4671ad7ca71645c3cf6186d99c0792c3d136a977.jpg@100w_100h.webp",
keywords: ["互动抽奖 #和平精英", "#和平精英", "和平精英"],
followings: [
434786180, // 和平精英官方号的 UID
50329337, // PEL和平精英职业联赛
522214928, // 江苏KONE和平精英分部
387752366, // AG-和平精英
638285563, // WBG和平精英战队
481783021, // LGD_和平精英
]
},
{
displayName: "三国杀",
displayIcon: "https://i0.hdslb.com/bfs/face/53f3ea77172036fba4d70fb0945abe6738349779.jpg@100w_100h.webp",
keywords: ["互动抽奖 #三国杀", "#三国杀", "三国杀", "#2023三国杀"],
followings: [
1254932367, // 三国杀十周年官方号的 UID
1672821212, // 三国杀OL互通版手游官方号的 UID
1738180662, // 欢乐三国杀官方号的 UID
587050283, // 三国杀移动版官方号的 UID
43292408, // 三国杀官方赛事
]
},
{
displayName: "Minecraft",
displayIcon: "https://i0.hdslb.com/bfs/face/c5578966c447a70edf831bbf7e522b7be6090fea.jpg@100w_100h.webp",
keywords: ["我的世界", "minecraft", "#我的世界", "我的世界拜年祭", "MCBBS", "我的世界中文论坛", "MC玩家", "MC服务器"],
followings: [
43310262, // 我的世界官方号的 UID
39914211, // 我的世界中文论坛(MCBBS)官方号的 UID
686127, // 籽岷
1503187, // 和谐号舰长
2170934, // 明月庄主
5836069, // 脏小豆
13337125, // GoldenEggs
22083989, // 节操Pro
22890621, // 宏二NordWes
34456580, // 药儿哟
35734399, // 小橙子姐姐解说
35925939, // 两幺六
53055540, // GW漫游大作战
96498913, // PoetJamil
165025941, // 大马哈鱼47
170651403, // 邹陈云飞
236574844, // Minecraft小救星
243681035, // wuli小周
288309681, // TianKong_y
362024317, // 哦还活着
390527713, // 史蒂猪StevenPig
393112610, // 上海交通大学Minecraft社
434736287, // Minecraft_传送门
470839152, // 图图图酱吖
486511101, // Minecraft-RIC
490670548, // Minecraft-ICE
614678902, // Crawler工作室
631881755, // 豆哥啦
661547786, // 绯色色i
1183597757, // 米可-Micro
1377901474, // 东南大学Minecraft社
1670040346, // Minecraft-Curios
3546631009995059, // SquaredMedia官方频道
]
},
{
displayName: "迷你世界",
displayIcon: "https://i0.hdslb.com/bfs/face/a7591e5e0278aafb76cc083b11ca5dd46f049420.jpg@100w_100h.webp",
keywords: ["mnsj", "迷你世界", "miniworld", "#迷你世界", "迷你世界拜年祭"],
followings: [
470935187, // 迷你世界官方号的 UID
51494691, // 迷你世界果冻呀
328368589, // 迷你世界王不畏解说
606753153, // 迷你世界狗蛋
1001979471, // 迷你世界果冻丫
1110563414, // 紫枫一迷你世界
1272155030, // 迷你世界半拉
1541734600, // 迷你世界二驴
1546135282, // 迷你世界汉堡吖mini
1578117313, // 迷你世界辣条吖
1586479234, // 迷你世界小白吖
1659178469, // 迷你世界柒柒姐
1823344826, // 汉堡迷你世界v
1862951948, // 迷你世界白熊
3493074967726714, // 迷你世界奶糖v
3493075015960752, // 迷你世界奶茶v
3493113479825578, // 迷你世界-拆
3493257967307320, // 迷你世界小哆啦吖
]
},
{
displayName: "初生科技",
displayIcon: "https://i0.hdslb.com/bfs/face/eb4c7bbea813eed3a92ee194809d85715e6a7659.jpg@100w_100h.webp",
// [禁止骂我!禁止拉黑!.jpg]
keywords: ["易语言", "编程猫", "scratch", "ramos", "winpe", "bsod", "memz", "MEMZ", "WindowsCE", "下崽器", "aero", "setup", "DWM", "CmzPrep", "VMWare", "希沃白板", "Ubuntu PE", "PowerShell", "gnu/linux"],
followings: [
//- 组1/关键词:system -//
493998035, // SYSTEM-RAMOS-ZDY
702028797, // JERRY-SYSTEM
631731585, // system-bootmgr-L
501355555, // MS-SYSTEM
1865727084, // SYSTEM-WinPE-CHD
1162296488, // System3206
1531948091, // SYSTEM_Win11_RE
392697653, // System-i386
313342814, // SYSTEM-GREE-GZN
1546428456, // SYSTEM-WIN-EDGE
631731585, // system-bootmgr-L
501355555, // MS-SYSTEM
2043088162, // SYSTEM-WINNT-ZDY
601270898, // 601270898
1531948091, // SYSTEM_Win11_RE
3493083238894137, // 井_SYSTEM_火车迷
1666981688, // System-Installer
1546428456, // SYSTEM-WIN-24H2
1162296488, // system4831
1886348413, // SYSTEM-MEMZ-CAO
1827307028, // SYSTEM_小影
1744631001, // SYSTEM-SUYI-WIN
699804375, // SYSTEM-MSDOS-ZDY
3493298725456171, // SYSTEM-WIN-BY
1431997122, // SYSTEM-Start
669094468, // SYSTEM-TANGYUAN
703051574, // SYSTEM-OOBE
604076432, // SYSTEM-WIN32-PE => Hacker_NanGua QQ:940123839 -来源:用户简介
//- 组2/关键词:bsod -//
451475014, // STR-BSOD
1511907771, // MEMZ-BSOD
1975308950, // BSOD-MEMZ
397847418, // 蓝屏钙BSOD
1776025003, // 蓝瓶钙BSoD
1007224506, // EXPLORER-BSOD
1175873768, // BSOD-Winme
2032637936, // BSOD-SYSTEM
1933399514, // win11_BSOD
1641461034, // DEEPIN_BSOD2_CMD
3493293100894309, // SYSTEM-BSOD-ZFS
1204666655, // 草方块BSOD
1124857662, // Wininit_BSOD
1306710323, // SHITOU_BSOD
10828819, // BSoD正在玩
1776025003, // 蓝瓶钙BSoD
1266839139, // JHR_BSOD_MIMZ
3461566410262700, // Windows_BSOD
1061621085, // Vista-BSOD
1007224506, // EXPLORER-BSOD
1175873768, // BSOD-Winme
665360141, // 微飞的BSOD
3461578091399948, // Silversoft_BSOD
1933399514, // win11_BSOD
2043170695, // SYSTEM-BSOD-MEMZ
//- 组3/关键词:memz -//
21927744, // 360MEMZ
1353783215, // MEMZ-Chrome
412777837, // 注册表MEMZ
457692234, // 奇怪的MEMZ
298993710, // 注册表编辑器MEMZ
413269076, // Cmd_MEMZ
649846967, // Win7MEMZ-BX
498912953, // AMD_MEMZ
390483853, // 炒鸡360MEMZ
362451533, // NC_Memz
351258144, // 豆沙包MEMZ
104657830, // 尚宜鼎MEMZ
365129777, // DrAMA-MEMZ
378430387, // 小李MEMZ
392672572, // 123MEMZ
1465447323, // 爱搞机的MEMZ
1585476, // 23胡彬MEMZ
1151195812, // 开朗的冰人MEMZ
1089892994, // MEMZ-Windows11
//- 组5/关键词:Aero -//
435972058, // WindowsAero毛玻璃
1452376557, // 没有Aero就没有灵魂
1911529131, // Aero8m
1321946754, // 没有Aero的Windows7
//- 组5/关键词:setup -//
589370259, // setup-windows安装
2050076822, // Windows-Setup
1549141274, // system-setup
692755897, // Setup-Official
483574120, // setup安装程序
1031408618, // Deewin-Setup
671918906, // win95setup
//- 组6/关键词:Start -//
524501321, // Start-hs888
2030178992, // Start-BME
//- 组7/关键词:Linux -//
1933598970, // 白羊Linux
603375808, // linux265
1984449284, // Linux粉
1093084152, // BSD-Linux
67247219, // Linux_Newbie
//- 组8/关键词:Windows -//
1921195852, // Windows之家
621857141, // Windows哥
612743845, // 浩瀚星晨win
1050145612, // windows11不会出
3493092688661431, // 炸了的win10
1601172780, // Windows毛玻璃解说233
353290736, // Win11的粉丝_offical
24821321, // Windows系统追更狂魔
1833642992, // Win32_WinSxS_sys
276817988, // 无人所知的windows12
1613384176, // Aero-Windows311
483675256, // Windows功能
2009792251, // Windows-Lover
3493125863508026, // 失败的Windows
696040999, // Lemon_x64_Win11
1225952698, // 叶一程哥哥win10
601259909, // 星晨大海win_Acpn
605857877, // 卖蓝屏钙的Win11
1736839855, // SYSTEM-D-WIN
3494364330330273, // 一只野生的win31
1375459514, // 开心的Windows
1340261135, // windows1球_启动中
578278851, // 星晨天际win
582129140, // Windows11-PPT
1462538741, // 很屑的windows114514
26284934, // win_小火龙
1965090607, // 可乐Windows
261016792, // Win10HOME
1751934902, // Win-PowerShell
248556377, // Win_Update
2108200476, // Win_Threshold-10
2017167096, // 喜欢Win8的MacPro
694139497, // Windows_Tester_2
1119522579, // 爱蓝屏的win10
1724541085, // SYSTEM--win7
1628906682, // 被win11吃掉的磁贴
1509347075, // Windows12MC
1261767230, // 一只屑win10
1605910926, // -Windows-11-
1326423111, // Win-Flash-Pro
1497262975, // 不解风情のWin11
1604146839, // windows田字牌电脑
1463163459, // Windows81Metro
687996269, // 喜欢Windows8的架空放送
3493119670618871, // 小锅说Windows
483345456, // Win10家庭版
2101678528, // OS_Windows11_lzn
1729734602, // bug32_Windows
1222118214, // windows11电脑的cmd
503289010, // Windows7の理系を行う
403527839, // windows核心编程
435227174, // Win10Win10是个屑
509902447, // 爱折腾的Windows
35833798, // Windows710
3493133778160480, // SYSTEM-WIN11-PE
169290582, // VMware的win7
1385242199, // MS-SYSTEM-WIN
383322806, // Win10Pro
3546554428295778, // SYSTEM-WIN-DCR
1283206843, // Windows被砍掉的Aero
1935801783, // Windows软件倒腾师
392012144, // 一只win8球
1338015717, // windows_system
1187162171, // Setup-Win11
1009063496, // Windows的Windows
3493118152280841, // mcdos-windows
435462593, // 唐狐WIN
1065194305, // 彩虹猫-win11
//- 组9/关键词:KDE -//
2008726064, // kde-yyds
1989712487, // SYSTEM-WIN11-KDE
//- 组10/关键词:Ubuntu -//
668421393, // Ubuntu-PE
586347926, // memz-ubuntu
//- 自定义组/依照个人判断 -//
1157923020, // 仗义的老班长
401094700, // 旮沓曼_gt428
356882513, // 被重组吃掉的虚拟桌面
198316802, // 传说当中的帅锅
1151325757, // SYSTEM-OPS-LJY
1304244190, // System-NBNB
504179884, // MYB_CKLS
1776456802, // 奇怪的MEMZ的小号
1534842751, // 爱WinPE的MEMZ
2112060594, // WINPE-SYSTEM
1439352366, // SYSTEM-WINPE-EXE
678414222, // Windows-regedit
505199229, // SYSTEM_PHILI
652188355, // 一个windows爱好者
1863175083, // 半不了世的空城
1736202379, // 胡桃玩VM
1322183332, // WindowsCEMEMZ新账号
414666753, // 桌面窗口管理器_DWM
698760287, // 出星海wrcjs_sp4
307432672, // 花l火
3493108908034540, // S-1-5-21-1726115
1158046953, // VistaChrome108
727892489, // Windows2003R2
1243577821, // hyq061221
1330313497, // alan-CRL
1190936866, // Qt小徐
507658814, // 镜靛openforge
310265955, // Ticki-Pigeon
357779530, // 空巢老KriaStans
456061336, // He1lo_Wor1d
590491558, // Technology_him
1948479703, // SYSTEM-Image-WIM
3494362556140426, // start-windows
1801064268, // 张星华-official
390148573, // 西瓜xg_
3461562834618602, // 辰东帅逼版
1093536899, // 软萌可爱的洛神
440662801, // 爱玩电脑的特兰克斯
1029196202, // 杀猴专业户
1283468503, // WinToGo-LZP
3493105315613465, // van-豆射手
42494833, // Happymax1212
1015730693, // 玩了114514分钟mc
484165196, // 351Workshop
1624520869, // Lime青柠_QingNing
1834260927, // Mo_Network
62677028, // LoadingPoint
696897486, // Mono也是墨诺喵
1308669589, // 殇げNyrMu
316481254, // 旗界汽车
513312081, // Opteron64
413043448, // 小杨聊科技
1499173387, // 下一终端
76868264, // 吃不到筷子的鼠
619829471, // 小宇_ERain
604251988, // 我可真是个添柴
20567718, // So_Y0ung
3493140700859270, // 中文名亦好听
1040308682, // 战王爱分享
37064895, // 小锋学长生活大爆炸
1268760897, // 屑の早茶光
384650704, // 91047971901_bili
1947070041, // 80691808980
1462538741, // MC-Windows114514
547326701, // 游戏攻资君
1572064888, // 波波yr
1965857981, // muci_nn
1347936870, // 托尔普森
3546589083732470, // 刘哥gametime做游戏
1969160969, // SR思锐Official
1868794422, // 僵尸是萌新
1500275808, // Minecraft729 WeChat:summoniron_golem QQ:3531622583 -来源:用户简介
1591866703, // 人朝的小郭同学 QQ群:370019841 -来源:用户简介
1179374590, // MRJX_QWQ
82363089, // 小宇Boi
529452185, // 酸乳甜梅 QQ:3202902554 -来源:用户简介
3493146268797771, // 莪乃Vista叔
3493114847168983, // 易溶于水的澳涐
1733089232, // Windwos7
3493104831171448, // 万恶之源669
272743796, // 难忘的朱古力232
89062643, // 泠楠梓萌
1964181966, // Minedows
1218496648, // 新年代老登暴扣黑曼巴
1569663198, // B-windows10-user
3537107693865449, // 我是小r解说
1080519183,
443988102, // 何人哉er
3493111974071179, // 一只在tfs的野飞友
3493133344049877, // mc泰菲6
3493086852286877, // MC团长解说
1812413197, // F_are_well
514802302, // 不爱笑的黑客
261401138, // S15万分小拿小刚
1760573759, // 轻轻抚摸她的身体
1053425351, // End_Infinity
348877540, // FurryXH
21946608, // 是土豆哒
3493108075464919, // 组策略编辑器GPEDIT
652665076, // 1204992
1152576410, // 一个Minecraft用户
7955948, // FTG_Win11
1632975427, // KALI_MC
1317996804, // 新版B界萌新
272836680, // 13437855279
502257570, // 智慧的蓝屏之神-doge
1309042145, // pvpjjjj
417138, // 你的两位朋友
2005074146, // 小熊猫Firedoge
15052067, // Gelan丶
3299305, // qaqz111
405545981, // 德比鹤-鸡你太美
1487149980, // CHUANGWEI每日游戏推荐
686217254, // has_7_h0l1day
5337680, // 550W离线版
1971481152, // windowstaskmgr
673473165, // orangeATA
277995137, // EnderCraft
273727645, // Bili-Tube
483680764, // Kuewwc QQ群:566766266 验证:9D5A -来源:用户简介
204809809,
1008072191, // 神金且抽象的鼓手
383897380, // ThisPC的Bili官方頻道 网站:senpai.114514.cloudns.be 邮箱:ruich97@icloud.com -来源:用户简介
496728862, // YUDS_清风
487291887, // Saber_White
551120966, // JustJaye233
525078314, // msstart
405543129, // Franklin-浩辰
480498743, // 山猹qwq
367151287, // A奶味伏特加
516443571, // 46102837537
2064265859, // 126com2012949294
365166874, // RZ-world
513458998, // Bf109G-10
590428323, // gbxrr
594779227, // 星弈社-暖言鸢猫猫SE
448815938, // MisakaPothole
1102137180, // 也数据发
1657379991, // 龙哥之哥
518020596, // 360小精灵qwq
395177787, // Android-TSK
436415283, // 无惧死机
513898841, // 无聊的路人家
627007091, // 你永远的二爷
1254215732, // 汪庭纬
2030178992, // ExemExp
479401385, // 风梓_wwt
1930623048,
498370133, // Huan_XLZ558
511131590, // TTHorror红熔
1991535809, // TongTong1071
1235828103, // 无言_WYAN
493936144, // 御坂妹10010号
1639826047, // 一个账号一部手机
600328664, // 王宾汉
501319924, // Code_Box
3493082699926050, // 陈沉尘CSY2022
107238284, // 奇怪的小羊减少了
590569754, // 和你heni
592551597, // 东风Cherrier账号 邮箱:chengowen6@outlook.com -来源:用户简介
522669301, // xmwpumpkin528
3546675725470229, // 树眼镜蛇归来
3546655280335698, // 小小的口腔溃疡
],
blacklist: [
//- 组1/关键词:system -//
493998035, // SYSTEM-RAMOS-ZDY
702028797, // JERRY-SYSTEM
631731585, // system-bootmgr-L
501355555, // MS-SYSTEM
1865727084, // SYSTEM-WinPE-CHD
1162296488, // System3206
1531948091, // SYSTEM_Win11_RE
392697653, // System-i386
313342814, // SYSTEM-GREE-GZN
1546428456, // SYSTEM-WIN-EDGE
631731585, // system-bootmgr-L
501355555, // MS-SYSTEM
2043088162, // SYSTEM-WINNT-ZDY
601270898, // 601270898
1531948091, // SYSTEM_Win11_RE
3493083238894137, // 井_SYSTEM_火车迷
1666981688, // System-Installer
1546428456, // SYSTEM-WIN-24H2
1162296488, // system4831
1886348413, // SYSTEM-MEMZ-CAO
1827307028, // SYSTEM_小影
1744631001, // SYSTEM-SUYI-WIN
699804375, // SYSTEM-MSDOS-ZDY
3493298725456171, // SYSTEM-WIN-BY
1431997122, // SYSTEM-Start
669094468, // SYSTEM-TANGYUAN
703051574, // SYSTEM-OOBE
604076432, // SYSTEM-WIN32-PE => Hacker_NanGua QQ:940123839 -来源:用户简介
//- 组2/关键词:bsod -//
451475014, // STR-BSOD
1511907771, // MEMZ-BSOD
1975308950, // BSOD-MEMZ
397847418, // 蓝屏钙BSOD
1776025003, // 蓝瓶钙BSoD
1007224506, // EXPLORER-BSOD
1175873768, // BSOD-Winme
2032637936, // BSOD-SYSTEM
1933399514, // win11_BSOD
1641461034, // DEEPIN_BSOD2_CMD
3493293100894309, // SYSTEM-BSOD-ZFS
1204666655, // 草方块BSOD
1124857662, // Wininit_BSOD
1306710323, // SHITOU_BSOD
10828819, // BSoD正在玩
1776025003, // 蓝瓶钙BSoD
1266839139, // JHR_BSOD_MIMZ
3461566410262700, // Windows_BSOD
1061621085, // Vista-BSOD
1007224506, // EXPLORER-BSOD
1175873768, // BSOD-Winme
665360141, // 微飞的BSOD
3461578091399948, // Silversoft_BSOD
1933399514, // win11_BSOD
2043170695, // SYSTEM-BSOD-MEMZ
//- 组3/关键词:memz -//
21927744, // 360MEMZ
1353783215, // MEMZ-Chrome
412777837, // 注册表MEMZ
457692234, // 奇怪的MEMZ
298993710, // 注册表编辑器MEMZ
413269076, // Cmd_MEMZ
649846967, // Win7MEMZ-BX
498912953, // AMD_MEMZ
390483853, // 炒鸡360MEMZ
362451533, // NC_Memz
351258144, // 豆沙包MEMZ
104657830, // 尚宜鼎MEMZ
365129777, // DrAMA-MEMZ
378430387, // 小李MEMZ
392672572, // 123MEMZ
1465447323, // 爱搞机的MEMZ
1585476, // 23胡彬MEMZ
1151195812, // 开朗的冰人MEMZ
1089892994, // MEMZ-Windows11
//- 组5/关键词:Aero -//
435972058, // WindowsAero毛玻璃
1452376557, // 没有Aero就没有灵魂
1911529131, // Aero8m
1321946754, // 没有Aero的Windows7
//- 组5/关键词:setup -//
589370259, // setup-windows安装
2050076822, // Windows-Setup
1549141274, // system-setup
692755897, // Setup-Official
483574120, // setup安装程序
1031408618, // Deewin-Setup
671918906, // win95setup
//- 组6/关键词:Start -//
524501321, // Start-hs888
2030178992, // Start-BME
//- 组7/关键词:Linux -//
1933598970, // 白羊Linux
603375808, // linux265
1984449284, // Linux粉
1093084152, // BSD-Linux
67247219, // Linux_Newbie
//- 组8/关键词:Windows -//
1921195852, // Windows之家
621857141, // Windows哥
612743845, // 浩瀚星晨win
1050145612, // windows11不会出
3493092688661431, // 炸了的win10
1601172780, // Windows毛玻璃解说233
353290736, // Win11的粉丝_offical
24821321, // Windows系统追更狂魔
1833642992, // Win32_WinSxS_sys
276817988, // 无人所知的windows12
1613384176, // Aero-Windows311
483675256, // Windows功能
2009792251, // Windows-Lover
3493125863508026, // 失败的Windows
696040999, // Lemon_x64_Win11
1225952698, // 叶一程哥哥win10
601259909, // 星晨大海win_Acpn
605857877, // 卖蓝屏钙的Win11
1736839855, // SYSTEM-D-WIN
3494364330330273, // 一只野生的win31
1375459514, // 开心的Windows
1340261135, // windows1球_启动中
578278851, // 星晨天际win
582129140, // Windows11-PPT
1462538741, // 很屑的windows114514
26284934, // win_小火龙
1965090607, // 可乐Windows
261016792, // Win10HOME
1751934902, // Win-PowerShell
248556377, // Win_Update
2108200476, // Win_Threshold-10
2017167096, // 喜欢Win8的MacPro
694139497, // Windows_Tester_2
1119522579, // 爱蓝屏的win10
1724541085, // SYSTEM--win7
1628906682, // 被win11吃掉的磁贴
1509347075, // Windows12MC
1261767230, // 一只屑win10
1605910926, // -Windows-11-
1326423111, // Win-Flash-Pro
1497262975, // 不解风情のWin11
1604146839, // windows田字牌电脑
1463163459, // Windows81Metro
687996269, // 喜欢Windows8的架空放送
3493119670618871, // 小锅说Windows
483345456, // Win10家庭版
2101678528, // OS_Windows11_lzn
1729734602, // bug32_Windows
1222118214, // windows11电脑的cmd
503289010, // Windows7の理系を行う
403527839, // windows核心编程
435227174, // Win10Win10是个屑
509902447, // 爱折腾的Windows
35833798, // Windows710
3493133778160480, // SYSTEM-WIN11-PE
169290582, // VMware的win7
1385242199, // MS-SYSTEM-WIN
383322806, // Win10Pro
3546554428295778, // SYSTEM-WIN-DCR
1283206843, // Windows被砍掉的Aero
1935801783, // Windows软件倒腾师
392012144, // 一只win8球
1338015717, // windows_system
1187162171, // Setup-Win11
1009063496, // Windows的Windows
3493118152280841, // mcdos-windows
435462593, // 唐狐WIN
1065194305, // 彩虹猫-win11
//- 组9/关键词:KDE -//
2008726064, // kde-yyds
1989712487, // SYSTEM-WIN11-KDE
//- 组10/关键词:Ubuntu -//
668421393, // Ubuntu-PE
586347926, // memz-ubuntu
//- 自定义组/依照个人判断 -//
1157923020, // 仗义的老班长
401094700, // 旮沓曼_gt428
356882513, // 被重组吃掉的虚拟桌面
198316802, // 传说当中的帅锅
1151325757, // SYSTEM-OPS-LJY
1304244190, // System-NBNB
504179884, // MYB_CKLS
1776456802, // 奇怪的MEMZ的小号
1534842751, // 爱WinPE的MEMZ
2112060594, // WINPE-SYSTEM
1439352366, // SYSTEM-WINPE-EXE
678414222, // Windows-regedit
505199229, // SYSTEM_PHILI
652188355, // 一个windows爱好者
1863175083, // 半不了世的空城
1736202379, // 胡桃玩VM
1322183332, // WindowsCEMEMZ新账号
414666753, // 桌面窗口管理器_DWM
698760287, // 出星海wrcjs_sp4
307432672, // 花l火
3493108908034540, // S-1-5-21-1726115
1158046953, // VistaChrome108
727892489, // Windows2003R2
1243577821, // hyq061221
1330313497, // alan-CRL
1190936866, // Qt小徐
507658814, // 镜靛openforge
310265955, // Ticki-Pigeon
357779530, // 空巢老KriaStans
456061336, // He1lo_Wor1d
590491558, // Technology_him
1948479703, // SYSTEM-Image-WIM
3494362556140426, // start-windows
1801064268, // 张星华-official
390148573, // 西瓜xg_
3461562834618602, // 辰东帅逼版
1093536899, // 软萌可爱的洛神
440662801, // 爱玩电脑的特兰克斯
1029196202, // 杀猴专业户
1283468503, // WinToGo-LZP
3493105315613465, // van-豆射手
42494833, // Happymax1212
1015730693, // 玩了114514分钟mc
484165196, // 351Workshop
1624520869, // Lime青柠_QingNing
1834260927, // Mo_Network
62677028, // LoadingPoint
696897486, // Mono也是墨诺喵
1308669589, // 殇げNyrMu
316481254, // 旗界汽车
513312081, // Opteron64
413043448, // 小杨聊科技
1499173387, // 下一终端
76868264, // 吃不到筷子的鼠
619829471, // 小宇_ERain
604251988, // 我可真是个添柴
20567718, // So_Y0ung
3493140700859270, // 中文名亦好听
1040308682, // 战王爱分享
37064895, // 小锋学长生活大爆炸
1268760897, // 屑の早茶光
384650704, // 91047971901_bili
1947070041, // 80691808980
1462538741, // MC-Windows114514
547326701, // 游戏攻资君
1572064888, // 波波yr
1965857981, // muci_nn
1347936870, // 托尔普森
3546589083732470, // 刘哥gametime做游戏
1969160969, // SR思锐Official
1868794422, // 僵尸是萌新
1500275808, // Minecraft729 WeChat:summoniron_golem QQ:3531622583 -来源:用户简介
1591866703, // 人朝的小郭同学 QQ群:370019841 -来源:用户简介
1179374590, // MRJX_QWQ
82363089, // 小宇Boi
529452185, // 酸乳甜梅 QQ:3202902554 -来源:用户简介
3493146268797771, // 莪乃Vista叔
3493114847168983, // 易溶于水的澳涐
1733089232, // Windwos7
3493104831171448, // 万恶之源669
272743796, // 难忘的朱古力232
89062643, // 泠楠梓萌
1964181966, // Minedows
1218496648, // 新年代老登暴扣黑曼巴
1569663198, // B-windows10-user
3537107693865449, // 我是小r解说
1080519183,
443988102, // 何人哉er
3493111974071179, // 一只在tfs的野飞友
3493133344049877, // mc泰菲6
3493086852286877, // MC团长解说
1812413197, // F_are_well
514802302, // 不爱笑的黑客
261401138, // S15万分小拿小刚
1760573759, // 轻轻抚摸她的身体
1053425351, // End_Infinity
348877540, // FurryXH
21946608, // 是土豆哒
3493108075464919, // 组策略编辑器GPEDIT
652665076, // 1204992
1152576410, // 一个Minecraft用户
7955948, // FTG_Win11
1632975427, // KALI_MC
1317996804, // 新版B界萌新
272836680, // 13437855279
502257570, // 智慧的蓝屏之神-doge
1309042145, // pvpjjjj
417138, // 你的两位朋友
2005074146, // 小熊猫Firedoge
15052067, // Gelan丶
3299305, // qaqz111
405545981, // 德比鹤-鸡你太美
1487149980, // CHUANGWEI每日游戏推荐
686217254, // has_7_h0l1day
5337680, // 550W离线版
1971481152, // windowstaskmgr
673473165, // orangeATA
277995137, // EnderCraft
273727645, // Bili-Tube
483680764, // Kuewwc QQ群:566766266 验证:9D5A -来源:用户简介
204809809,
1008072191, // 神金且抽象的鼓手
383897380, // ThisPC的Bili官方頻道 网站:senpai.114514.cloudns.be 邮箱:ruich97@icloud.com -来源:用户简介
496728862, // YUDS_清风
487291887, // Saber_White
551120966, // JustJaye233
525078314, // msstart
405543129, // Franklin-浩辰
480498743, // 山猹qwq
367151287, // A奶味伏特加
516443571, // 46102837537
2064265859, // 126com2012949294
365166874, // RZ-world
513458998, // Bf109G-10
590428323, // gbxrr
594779227, // 星弈社-暖言鸢猫猫SE
448815938, // MisakaPothole
1102137180, // 也数据发
1657379991, // 龙哥之哥
518020596, // 360小精灵qwq
395177787, // Android-TSK
436415283, // 无惧死机
513898841, // 无聊的路人家
627007091, // 你永远的二爷
1254215732, // 汪庭纬
2030178992, // ExemExp
479401385, // 风梓_wwt
1930623048,
498370133, // Huan_XLZ558
511131590, // TTHorror红熔
1991535809, // TongTong1071
1235828103, // 无言_WYAN
493936144, // 御坂妹10010号
1639826047, // 一个账号一部手机
1907177406, // Z会的卡通猫 QQ群:215684585 -来源:用户简介
600328664, // 王宾汉
501319924, // Code_Box
3493082699926050, // 陈沉尘CSY2022
107238284, // 奇怪的小羊减少了
590569754, // 和你heni
592551597, // 东风Cherrier账号 邮箱:chengowen6@outlook.com -来源:用户简介
522669301, // xmwpumpkin528
3546675725470229, // 树眼镜蛇归来
3546655280335698, // 小小的口腔溃疡
]
},
{
displayName: "Roblox",
displayIcon: "https://i0.hdslb.com/bfs/face/916a16a2d69f25819adbb99946dea8d9dc6017e4.jpg@100w_100h.webp",
keywords: ["Roblox", "ROBLOX", "roblox", "Roblox代充", "ROBLOX代充", "roblox代充"],
followings: [
697014145, // ROBLOX中文社区
1318705997, // Roblox代充狼少
1871040990, // ROBLOX栖酸
3546609593878970, // 玩Roblox的小培根头呀
2100562436, // 萌游戏Roblox
24858417, // Roblox黑科技 WeChat:oxYLENxo QQ:390751814 -来源:用户简介
3493115440662822, // 一只爱玩roblox的noob
1113903222, // 太南游戏Roblox
1707425225, // Roblox_XiaoDi
1631113298, // 阿叶游戏Roblox
]
},
{
displayName: "火影忍者",
displayIcon: "https://i0.hdslb.com/bfs/face/3c975d44586143dd0eb4b121a3437bc8cc696610.jpg@100w_100h.webp",
keywords: ["互动抽奖 #火影忍者", "#火影忍者", "火影忍者"],
followings: [
441897078, // 火影忍者手游情报君
323357649, // 鬼渐van火影
43991083, // 暴躁老哥艾火影
172858724, // 火影手游晚安姐姐实况
396388451, // 火影忍者萝卜
320588834, // 火影忍者手游吴克玩家
516904626, // 火影隔壁村大聪明
259906339, // 火影手游静静NPL
8489468, // 火影手游灭霸
1808271299, // 旗木卡卡兮火影手游
559357874, // 火影手游fj
671089519, // 火影-村男与欧队长
2051066128, // 奇拉比-火影型男
404761044, // 火影手游G木生 QQ:3194987547
619039634, // 小七火影忍者
]
},
{
displayName: "暗区突围",
displayIcon: "https://i0.hdslb.com/bfs/face/9fb5b78af4a4345f650b783cf8a1b176d8389b8f.jpg@100w_100h.webp",
keywords: ["互动抽奖 #暗区突围", "#暗区突围", "暗区突围", "#一起上暗"],
followings: [
1915056903, // 暗区突围官方号的 UID
3546578394548722, // 《暗区突围:无限》端游官方号的 UID
3493093171006178, // 暗区突围赛事
1716115080, // 天霸暗区突围手游分部
675132117, // 小鲨鱼-暗区突围
471147874, // 暗区突围XJJ
443116092, // 暗区突围阿柒
2033313166, // 心叶-暗区突围
1214503199, // 刘杨杨暗区突围
86881329, // 梦求真暗区突围
195223983, // 阿帅暗区突围
627424061, // 暗区突围柒零 QQ群:513785932
1023776900, // 暗区突围一君
1611146372, // 老冯暗区突围
425037514, // 六子暗区突围
349964931, // 小余哥-暗区突围
3493294497597661, // 暗区突围欧大帅博奇王
3537109052819504, // 三石暗区突围
1463996771, // 暗区突围小舩子 QQ群:927133872
1150405278, // 暗区突围陌柒-世一粉
]
},
{
displayName: "香肠派对",
displayIcon: "https://i0.hdslb.com/bfs/face/ecfc11464941618978d464c5db795dfc9ac7d932.jpg@100w_100h.webp",
keywords: ["香肠派对"],
followings: [
285308635, // 香肠派对手游官方号的 UID
236615531, // 香肠派对屁屁王
1047655453, // 香肠派对梦柯
483407496, // 香肠派对流雲
1203401319, // 菲丽西香肠派对
1411805718, // 香肠派对晓冬吖
1650922953, // 香肠派对随缘
239687082, // 香肠派对空空
473502534, // 香肠派对卤本蛋
1387713046, // 香肠派对电竞
]
},
{
displayName: "穿越火线",
displayIcon: "https://cf.qq.com/favicon.ico",
keywords: ["穿越火线"],
followings: [
315554376, // 穿越火线官方号的 UID
33281681, // CF威廉I黑化版
204120111, // CF农哥吊打小怪兽
398597510, // CF教父
440017413, // 穿越火线兴兴
456180476, // CF猫七
474595618, // 穿越火线赛事
1083400219, // cf孙某
]
},
{
displayName: "地下城与勇士",
displayIcon: "https://dnf.qq.com/favicon.ico",
keywords: ["地下城与勇士", "DNF"],
followings: [
102176172, // 地下城与勇士官方号的 UID
332349, // DNF死兔子
8233456, // DNF枪魂冰子
27253173, // DNF面码
90179837, // dnf老搬
168090912, // 17173DNF官方
353944511, // DNF手游假猪
]
},
{
displayName: "绝地求生",
displayIcon: "https://pubg.qq.com/favicon.ico",
keywords: ["绝地求生", "PUBG"],
followings: [
6528910, // 小贝的游戏食堂
46708782, // 鲁大能
50329485, // 吃鸡赛事
449704680, // 意识DT
552064023, // 吃鸡小表弟
]
},
{
displayName: "英雄联盟",
displayIcon: "https://lol.qq.com/favicon.ico",
keywords: ["英雄联盟", "LOL"],
followings: [
50329118, // 哔哩哔哩英雄联盟赛事官方号的 UID
50329220, // 哔哩哔哩LOL赛事直播
4895244, // LOL丶诺诺
23364027, // 英雄联盟-小白鸦
178778949, // 英雄联盟
302651406, // WBG英雄联盟分部
470840543, // LOL楠神李青
652663378, // LOL小超梦
]
},
{
displayName: "魔兽世界",
displayIcon: "https://i0.hdslb.com/bfs/game/6e3b53029663a11fc2e66ca1b3e523870177c6cc.jpg@100w_100h.webp",
keywords: ["魔兽世界", "魔兽", "艾泽拉斯"],
},
{
displayName: "CSGO",
displayIcon: "https://i0.hdslb.com/bfs/face/8119efd25d219ae7f192d51f5a3fc3ec45856375.jpg@100w_100h.webp",
keywords: ["CS2", "cs2", "CSGO", "csgo", "CS:GO", "cs:go", "反恐精英", "沙二", "沙2", "核子危机", "炙热沙城", "远古遗迹", "殒命大厦", "炼狱小镇", "死亡游乐园", "跳投", "s1mple", "major"],
followings: [
48455786, // CSGO国服官方号的 UID
474595627, // CSGO官方赛事
2183230, // 玩机器
9838560, // 菊咕咕
22192872, // igxe
25195727, // ququ
203680252, // aycs2
309491479, // 内格夫
317953117, // csgo-miku
373076765, // tyloo
381435385, // 茄子
384942089, // 德云两鬼
409588881, // csboy
437744340, // 王喜顺
472514992, // navi
480810988, // g2
512105432, // 玉麒麟
645647361, // BUFF
1497263761, // 哑巴老六
3494376720304904, // kennys
]
},
{
displayName: "第五人格",
displayIcon: "https://i0.hdslb.com/bfs/face/c4cbdafecef76836b94f2ba8832d0a04d709a499.jpg@100w_100h.webp",
keywords: ["第五人格", "#第五人格", "互动抽奖 #第五人格"],
followings: [
211005705, // 网易第五人格手游官方号的 UID
105022844, // 第五人格赛事
452627895, // 狼队电竞第五人格分部
1385707562, // TE溯第五人格分部
]
},
{
displayName: "蛋仔派对",
displayIcon: "https://i0.hdslb.com/bfs/face/6afedb4d85ea6c4115f5548146dc8d7127886ca0.jpg@100w_100h.webp",
keywords: ["蛋仔派对", "#蛋仔派对", "互动抽奖 #蛋仔派对"],
followings: [
1306451842, // 网易蛋仔派对官方号的 UID
]
},
{
displayName: "GLITCH",
displayIcon: "https://i0.hdslb.com/bfs/face/06ea197a6b245ff730c8d9abd684abdff3193ef3.jpg@100w_100h.webp",
keywords: ["格历奇GLITCH", "YouTube GLITCH", "GLITCH入驻b站", "无机杀手", "Murder Drones", "神奇数字马戏团", "The Amazing Digital Circus"],
followings: [
49442838, // 格历奇GLITCH官方号的 UID
1554039777, // 冒充GLITCH官方号的 UID
]
},
{
displayName: "彩虹六号:围攻",
displayIcon: "https://i0.hdslb.com/bfs/game/0f80bc73fc12a30c7f9c42f4e304a125f9aa1f10.jpg@100w_100h.webp",
keywords: ["彩虹6号:围攻", "彩虹六号", "彩六", "R6S", "Rainbow Six Siege"],
followings: [
1661612, // Hex今天切墙了吗
1932102, // 溪木的龙裔
3227461, // 乔伊奥斯托雷
3933162, // 蚊子
17098554, // 豆豆最棒
98991109, // 角社区
115545042, // 梅西杰的西餐厅
140403337, // 塔塔kira
415890389, // 高板大芥末
]
},
{
displayName: "小马宝莉",
displayIcon: "https://i0.hdslb.com/bfs/face/7a81dfd45db8333cbbce412b9a93d0f732261dd0.jpg@100w_100h.webp",
keywords: ["宝莉", "云宝", "碧琪", "萍琪", "暮光", "暮暮", "紫悦", "小蝶", "瑞瑞", "虹林檎", "序蝶", "粉毛组", "图书组"],
followings: [
5517794, // WonderLS
6881238, // PonyDaily
8346596, // 斯朗Shiron
12651008, // 虹云彼方
12719091, // 习成PBU
14824857, // 丢丢之王
16497847, // 小杯冠
18251508, // 千景
19443010, // CokeCoffee
21618817, // CNBC马展
22938997, // 霹雳神偷
23737695, // 不恰萝卜の兔子
27708737, // 雅欣妮砸
28344516, // 中二病大狮子
29254354, // Tridashie
32218088, // 紫鬃骊驹
37479021, // 小马宝莉点播厅
37719736, // 灵翼Lingyeee|CSBC马展
38818936, // 荆荆荆竹野
44134944, // 青焰小马
44162034, // 玛奇马骑马骑马
51688809, // Stellar-Windy
66970100, // LUMO_Xu
95119610, // 与君醉桃坞
118936756, // 心军RD
141792972, // 音灵灵
143348211, // 暮光闪闪_Twilight
159413920, // BronyTown
162857987, // 神通广大的超级闪闪
173407173, // Mushak植物
205022800, // 霜月月月月
291253032, // 魔熠小星星-c-
299313851, // 荧光_Fluorescence
306310521, // 幻歌精神状态良好
319298296, // 小马国男孩
340472568, // 马圈视野
346748701, // Twilight-Shimmer
352400157, // 叶翼叶芝
359143428, // 赤昧灯辉
381352558, // TTSS
381647702, // Coryzen
401633058, // 短笛横吹1231
403110171, // 红染之凌
409790680, // Talirian
429649720, // White_AL
442392499, // 友谊俱乐部starlight苍鱼
475290371, // Douershun
480137948, // Silvery_SKY
481261734, // 一只星月star
485600404, // 御坂美麒
496801702, // bf官方
525140745, // Uncle-Chai
529496831, // Unkinfo_
536402568, // 糖希酱
550924902, // 流光叆叇_ふきおくる
596133695, // 酒不可食用X
597085888, // Stellar_Dusk暮辰
606568713, // 费杰龙只会画画
641391025, // 凝霜cream
646801310, // cbf重庆马迷嘉年华
671656021, // 神七233
695521854, // 凝安---
1080164448, // LemonCola柠檬可乐
1100577818, // 苍筤feather
1117091922, // 神风小马同人绘画
1122442912, // Viento动画工作室
1160291544, // ShunHsi瞬息色彩
1235216769, // MLP-紫悦
1259597415, // 翠虹-nuyadable
1355029670, // zyh黑风
1436757844, // Lydia-Windy
1584226296, // _海盐気泡水_
1599773009, // 晴云字幕组
1625041793, // Eastquestria-东马厂牌
1630607440, // Fimtale官方
1676425649, // Starsky_Bearer
1694237999, // 画马丧志的屑彩梦
1774687156, // 呆呆猫
1999706609, // 羽落05
2052819254, // BladeFeather
3461563140802631, // hhzzy
3493080399349765, // 慕芯w
3493110080342763, // 彩霞闪闪_开学消失版
3493114880722969, // 泠老师的遗嘱
3493118047422505, // MLP-Twilight
3493135629945549, // KARINA_WHITE
3493293801343294, // 晶云QwQ
3494365531999068, // ry_Xplosion
3537122323597967, // 线牌洗衣机
3546388015089937, // 中央空调tear
3546559893473298, // 暗冥优莉
3546588335049207, // 星雪凌晶-Snowy_Twinkle
3546632490584150, // 涂山-秋卉
]
},
{
displayName: "孙笑川258",
displayIcon: "https://i0.hdslb.com/bfs/face/946857bdbbe15c419e24a60cda6ae96b2ae348ca.jpg@100w_100h.webp",
keywords: ["孙笑川", "笑川"],
},
{
displayName: "学生",
displayIcon: "学",
keywords: ["班级", "年级", "小学", "初中", "高中", "中考", "高考", "四六级", "学生党", "不放假", "防沉迷", "上学", "开学", "班里", "班委", "放寒假", "写作业", "学校的", "我们班", "我们老师", "我们学校"],
},
{
displayName: "互助",
displayIcon: "互",
keywords: ["互关", "互赞", "回赞", "回关", "不取关", "电磁力互助", "必回", "互相关注", "互相点赞"],
}
]
/**
* 对输入的UID数字进行排序,并保留注释。
* 已暴露到脚本作用域的全局窗口,您可直接在浏览器控制台调用该函数。
*
* 运行:
sort(`1661612, // Hex今天切墙了吗
3227461, // 乔伊奥斯托雷
115545042, // 梅西杰的西餐厅
3933162,
140403337, // 塔塔kira
98991109, // 角社区
17098554, // 豆豆最棒
1932102,
415890389 // 高板大芥末`)
* 输出:
1661612, // Hex今天切墙了吗
1932102,
3227461, // 乔伊奥斯托雷
3933162,
17098554, // 豆豆最棒
98991109, // 角社区
115545042, // 梅西杰的西餐厅
140403337, // 塔塔kira
415890389, // 高板大芥末
*
* @param {string} inputText - 输入包含数字和注释的文本。
* @returns {string} - 排序后的文本,保留了注释。
*/
unsafeWindow.sort = function (inputText) {
const regex = /(\d+),?\s*(?:\/\/(.*))?/g;
let entries = [];
let match;
while ((match = regex.exec(inputText)) !== null) {
entries.push({
number: parseInt(match[1]),
comment: match[2] ? match[2].trim() : '' // 处理可能不存在的注释
});
}
entries.sort((a, b) => a.number - b.number);
let sortedText = entries.map(entry => entry.comment
? `${entry.number}, // ${entry.comment}`
: `${entry.number},`).join('\n');
console.log(sortedText)
}
/**
* 防止代码因其他原因被执行多次
* 这段代码出自 Via轻插件,作者谷花泰
*/
let key = encodeURIComponent('(改)B站成分检测器:主代码');
if (window[key]) return;
window[key] = true;
console.log("【(改)B站成分检测器】即时\n运行中...")
// 创建样式
addCheckerStyle();
// 空间动态api
const cardApiUrl = 'https://api.bilibili.com/x/web-interface/card?mid='
const spaceApiUrl = 'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?host_mid='
const followingApiUrl = 'https://api.bilibili.com/x/relation/followings?vmid='
const searchIcon = `<svg width="12" height="12" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.3451 15.2003C16.6377 15.4915 16.4752 15.772 16.1934 16.0632C16.15 16.1279 16.0958 16.1818 16.0525 16.2249C15.7707 16.473 15.4456 16.624 15.1854 16.3652L11.6848 12.8815C10.4709 13.8198 8.97529 14.3267 7.44714 14.3267C3.62134 14.3267 0.5 11.2314 0.5 7.41337C0.5 3.60616 3.6105 0.5 7.44714 0.5C11.2729 0.5 14.3943 3.59538 14.3943 7.41337C14.3943 8.98802 13.8524 10.5087 12.8661 11.7383L16.3451 15.2003ZM2.13647 7.4026C2.13647 10.3146 4.52083 12.6766 7.43624 12.6766C10.3517 12.6766 12.736 10.3146 12.736 7.4026C12.736 4.49058 10.3517 2.1286 7.43624 2.1286C4.50999 2.1286 2.13647 4.50136 2.13647 7.4026Z" fill="currentColor"></path></svg>`
const checkButton = `<div class="composition-checkable"><div class="composition-badge-control"><a class="composition-name-control" title="点击查询用户成分">${searchIcon}</a></div></div>`
const checked = {}
const checking = {}
let dom = ''
// 2024版评论
waitForKeyElements("div#info div#user-name[data-user-profile-id]", (element) => {
if (element && element.length > 0) {
let style = document.createElement("style");
style.rel = 'stylesheet';
style.innerHTML = addCheckerStyle(true)
element.before(style)
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-user-profile-id"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2024版 回复、纯@评论
waitForKeyElements("p#contents a[data-user-profile-id]", (element) => {
if (element && element.length > 0) {
let style = document.createElement("style");
style.rel = 'stylesheet';
style.innerHTML = addCheckerStyle(true)
element.before(style)
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-user-profile-id"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2024版用户卡片
waitForKeyElements("div#wrap div#view div#body div#title a#name", (element) => {
if (element && element.length > 0 && element.parent().parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1].length > 0) {
let style = document.createElement("style");
style.rel = 'stylesheet';
style.innerHTML = addCheckerStyle(true)
element.parent().parent().before(style)
let button = $(checkButton)
let initialText = element.text().trim();
if (element.parent().parent().parent().find(".composition-checkable, .composition-checked"))
element.parent().parent().parent().find(".composition-checkable, .composition-checked").remove()
button.css({ "margin": "8px 5px" });
button.one('click', function () {
checkComposition(element.parent().parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent().parent(), { "margin": "0 0 10px" })
})
element.parent().parent().after(button);
if (GM_getValue('Auto') === 'true') button.click()
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList' || mutation.type === 'characterData') {
let button = $(checkButton)
let currentText = element.text().trim();
if (currentText === initialText) return;
initialText = currentText;
if (element.parent().parent().parent().find(".composition-checkable, .composition-checked"))
element.parent().parent().parent().find(".composition-checkable, .composition-checked").remove();
button.css({ "margin": "8px 5px" });
button.off('click').one('click', function () {
checkComposition(element.parent().parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent().parent(), { "margin": "0 0 10px" });
});
element.parent().parent().after(button);
if (GM_getValue('Auto') === 'true') button.click();
}
});
});
// 配置观察器
observer.observe(element.get(0), {
childList: true,
subtree: true,
characterData: true
});
// 清理观察器的函数
element.data('observer', observer);
}
});
// 2022版评论
waitForKeyElements("div.content-warp div.user-info div.user-name[data-user-id]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-user-id"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2022版子评论
waitForKeyElements("div > div.sub-user-info div.sub-user-name[data-user-id]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-user-id"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2022版含@的评论
waitForKeyElements("span a.jump-link.user[data-user-id]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-user-id"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2022版用户卡片
waitForKeyElements("div.user-card div.card-content div.card-user-info a.card-user-name", (element) => {
if (element && element.length > 0 && element.parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1].length > 0) {
let button = $(checkButton)
element.parent().parent().after(button);
button.css({ "margin": "8px 5px" });
button.one('click', function () {
checkComposition(element.parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent().parent(), { "margin": "0 0 10px" })
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 2022版动态用户卡片
waitForKeyElements("div.bili-user-profile div.bili-user-profile-view div.bili-user-profile-view__info div.bili-user-profile-view__info__header a.bili-user-profile-view__info__uname", (element) => {
if (element && element.length > 0 && element.parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1].length > 0) {
let button = $(checkButton)
let initialText = element.text().trim();
if (element.parent().parent().parent().parent().find(".composition-checkable, .composition-checked"))
element.parent().parent().parent().parent().find(".composition-checkable, .composition-checked").remove()
element.parent().parent().parent().after(button);
button.css({ "margin": "8px 5px" });
button.one('click', function () {
checkComposition(element.parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent().parent().parent(), { "margin": "0 0 10px" })
})
if (GM_getValue('Auto') === 'true') button.click()
// 可能只会有一个元素,所以监听用户名刷新
element.on('DOMSubtreeModified', function () {
let button = $(checkButton)
let currentText = $(this).text().trim();
if (currentText === initialText) return;
initialText = currentText;
if (element.parent().parent().parent().parent().find(".composition-checkable, .composition-checked"))
element.parent().parent().parent().parent().find(".composition-checkable, .composition-checked").remove()
button.css({ "margin": "8px 5px" });
button.off('click').one('click', function () {
checkComposition(element.parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent().parent().parent(), { "margin": "0 0 10px" })
})
element.parent().parent().parent().after(button);
if (GM_getValue('Auto') === 'true') button.click()
})
}
});
// 旧版评论
waitForKeyElements("div.reply-wrap > div > div.user a.name[data-usercard-mid]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-usercard-mid"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 旧版用户卡片
waitForKeyElements("div.user-card div.info p.user a.name", (element) => {
if (element && element.length > 0 && element.parent().parent().parent().find("a.like").attr("mid")) {
let button = $(checkButton)
element.parent().parent().parent().find("div.btn-box").after(button);
button.css({ "margin": "8px 5px" });
button.one('click', function () {
checkComposition(element.parent().parent().parent().find("a.like").attr("mid"), element, button.find(".composition-name-control"), element.parent().parent().parent().find("div.btn-box"), { "margin": "0 0 10px" })
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 用户中心 关注列表、粉丝列表
waitForKeyElements("div.content a.title span.fans-name", (element) => {
if (element && element.length > 0) {
if (element.parent().parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1].length > 0) {
let button = $(checkButton)
button.css({ "overflow": "hidden", "margin-bottom": "10px" });
element.parent().after(button)
button.one('click', function () {
checkComposition(element.parent().parent().find('a[href*="space.bilibili.com"]').attr('href').match(/space\.bilibili\.com\/(\d+)/)[1], element, button.find(".composition-name-control"), element.parent(), { "overflow": "hidden", "margin-bottom": "10px" })
})
if (GM_getValue('Auto') === 'true') button.click()
}
}
});
// 旧版包含@的评论
waitForKeyElements("div.reply-wrap > div > p.text a[data-usercard-mid]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-usercard-mid"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 旧版 回复、纯@评论
waitForKeyElements("span.text-con a[data-usercard-mid]", (element) => {
if (element && element.length > 0) {
let button = $(checkButton)
element.after(button)
button.one('click', function () {
checkComposition(element.attr("data-usercard-mid"), element, button.find(".composition-name-control"), element, '')
})
if (GM_getValue('Auto') === 'true') button.click()
}
});
// 添加标签
function installComposition(rule, elemload, eleminst, elemcss) {
let badge = $(`<div class="composition-checked"><div class="composition-badge">
<a class="composition-name"${GM_getValue('Lite') === 'true' ? ' style="padding-left:4px!important;"' : ""} title="${rule.displayName},点击查看已识别用户">${GM_getValue('Lite') === 'true' ? "" : rule.displayName}</a>
${rule.displayIcon ? (
rule.displayIcon.match("https:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" title="${rule.displayName},点击查看已识别用户" src="${rule.displayIcon}" class="composition-icon">` :
rule.displayIcon.match("http:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" title="${rule.displayName},点击查看已识别用户" src="${rule.displayIcon}" class="composition-icon">` :
rule.displayIcon.match("data:") ? `<img title="${rule.displayName},点击查看已识别用户" src="${rule.displayIcon}" class="composition-icon">` :
`<span class="composition-icon" title="${rule.displayName},点击查看已识别用户">${rule.displayIcon}</span>`
) : ''}
</div></div>`)
badge.on('click', function () {
showAllUser()
})
if (elemcss) badge.css(elemcss);
if (eleminst) eleminst.after(badge);
elemload.parent().parent().remove();
}
// 检查标签
function checkComposition(id, element, elemload, eleminst, elemcss) {
// 用户名称获取
let eltx = element.text().trim()
let name = eltx.charAt(0) == "@" ? eltx.substring(1) : eltx
elemload.text('等待...')
elemload.attr('title', '正在查询中,等下吧...')
if (checked[id] != undefined) {
let found = checked[id]
if (found.length > 0) {
for (let rule of found) {
installComposition(rule, elemload, eleminst, elemcss)
}
console.log(`【(改)B站成分检测器】缓存\n检测到 ${name} ${id} 的成分为\n`, JSON.parse(JSON.stringify(found.map(it => { return { name: it.displayName, reason: it.reason, item: it.item, keyword: it.keyword, uid: it.uid, full: it.full } }))))
} else {
console.log(`【(改)B站成分检测器】缓存\n检测到 ${name} ${id} 的成分为 无`)
elemload.parent().parent().attr('class', 'composition-checked');
elemload.text('无')
elemload.attr('title', '点击查看已查询过的用户')
elemload.on('click', function () {
showAllUser()
})
}
} else if (checking[id] != undefined) {
if (checking[id].indexOf(element) < 0)
checking[id].push({
element: element,
elemload: elemload,
eleminst: eleminst,
elemcss: elemcss,
});
} else {
checking[id] = [{
element: element,
elemload: elemload,
eleminst: eleminst,
elemcss: elemcss
}];
detectComposition(id, name, true)
.then((found) => {
if (found.length > 0) {
value = found.map(it => ({
name: it.displayName,
img: it.displayIcon,
reason: it.reason,
item: it.item,
keyword: it.keyword,
uid: it.uid,
full: it.full
}))
dom += `
<div style="margin-top: 25px">
<div style="margin:0;font-size:large;">${name}</div>
<div id="tips" style="color: #fb7299;font-size:medium;"><a href="https://space.bilibili.com/${id}/" target="_blank" style="color: #fb7299;">UID ${id}</a></div>
`;
for (let i = 0; i < value.length; i++) {
let reason = value[i].keyword || value[i].uid
let icon = value[i].img ? (
value[i].img.match("https:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" src="${value[i].img}" class="composition-icon">` :
value[i].img.match("http:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" src="${value[i].img}" class="composition-icon">` :
value[i].img.match("data:") ? `<img src="${value[i].img}" class="composition-icon">` :
`<span class="composition-icon">${value[i].img}</span>`
) : ''
dom += `
<div style="margin-top: 10px;">
<div class="composition-badge">
<a class="composition-name">${value[i].name}</a>
${icon}
</div>
<div style="margin-top: 8px;">
<div class="composition-name">原因:${value[i].reason}${typeof value[i].item === 'string' ? "(" + value[i].item + ")" : ""}</div>
<div class="composition-name">匹配:${reason}</div>
</div>
</div>`;
}
dom += `</div>`
let displayNameSet = new Set();
found = found.filter(item => {
if (displayNameSet.has(item.displayName)) {
return false;
} else {
displayNameSet.add(item.displayName);
return true;
}
});
// 给所有用到的地方添加标签
for (let elements of checking[id]) {
if (found.length > 0) {
for (let rule of found) {
installComposition(rule, elements.elemload, elements.eleminst, elements.elemcss);
}
} else {
elements.elemload.parent().parent().attr('class', 'composition-checked');
elements.elemload.text('无');
elements.elemload.attr('title', '点击查看已查询过的用户');
elements.elemload.on('click', function () {
showAllUser();
});
}
}
} else {
for (let elements of checking[id]) {
elements.elemload.parent().parent().attr('class', 'composition-checked');
elements.elemload.text('无');
elements.elemload.attr('title', '点击查看已查询过的用户');
elements.elemload.on('click', function () {
showAllUser();
});
}
}
delete checking[id];
checked[id] = found
})
.catch((error) => {
if (debug) console.error(`【(改)B站成分检测器】即时\n检测 ${name} ${id} 的成分失败`, error);
for (let elements of checking[id]) {
elements.elemload.text('重试')
elements.elemload.attr('title', '点击重新查询此用户成分')
elements.elemload.one('click', function () {
checkComposition(id, elements.element, elements.elemload, elements.eleminst, elements.elemcss)
})
}
delete checking[id];
});
}
}
dom = `<div>
<div id="tips">因判断关键词较为广泛,可能会出现误杀的现象</div>
<div id="tips">脚本还在测试阶段,喜欢的话还请留下你的评论</div>
<div id="tips">Ctrl+F 可以快速在本页中搜索内容</div>
${dom}</div>`;
function showAllUser() {
Swal.fire({
title: '已识别用户',
html: dom,
icon: 'info',
heightAuto: false,
scrollbarPadding: false,
showCloseButton: true,
confirmButtonText: '关闭'
})
}
GM_registerMenuCommand("查看已检查的用户", () => {
showAllUser();
});
GM_registerMenuCommand("手动输入 ID 检查", () => {
uidChecker();
});
GM_registerMenuCommand("慢速点击已有按钮(少触发风控,不适用新版评论)", () => {
let timeout = 1500 + (Math.floor(Math.random() * 1000) + 1);
let count = 0;
$('.composition-checkable').each(function () {
let element = $(this);
count++;
setTimeout(function () {
element.click();
}, count * timeout);
});
});
GM_registerMenuCommand("快速点击已有按钮(易触发风控,不适用新版评论)", () => {
let timeout = 1000;
let count = 0;
$('.composition-checkable').each(function () {
let element = $(this);
count++;
setTimeout(function () {
element.click();
}, count * timeout);
});
});
function request(option) {
return new Promise((resolve, reject) => {
let httpRequest = typeof GM_xmlhttpRequest !== "undefined" ? GM_xmlhttpRequest : GM.xmlHttpRequest;
httpRequest({
method: 'get',
...option,
onload: (response) => {
let res = JSON.parse(response.responseText);
resolve(res);
},
onerror: (error) => {
reject(error);
},
});
});
}
function setting(conf_name, tips) {
if (GM_getValue(conf_name) === 'true') {
GM_setValue(conf_name, 'false');
message.info(`已禁用 ${tips}<br/>刷新后生效。`, true);
} else {
GM_setValue(conf_name, 'true');
message.info(`已启用 ${tips}<br/>刷新后生效。`, true);
}
}
function uidChecker() {
Swal.fire({
title: '成分检测',
imageUrl: 'https://www.bilibili.com/favicon.ico',
imageAlt: `哔哩哔哩 干杯~`,
imageWidth: 40,
imageHeight: 40,
input: 'number',
inputAttributes: {
autocapitalize: 'off'
},
allowOutsideClick: false,
showCloseButton: true,
confirmButtonText: '确定并查询',
showLoaderOnConfirm: true,
heightAuto: false,
scrollbarPadding: false,
text: '请输入要查询的 UID 号码',
preConfirm: (uid) => {
return new Promise(async (resolve) => {
// 获取用户卡片
try {
if (!uid) throw new CodeError("请输入完整的用户 UID")
let cardRequest = await request({
url: cardApiUrl + uid,
headers: {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
"referer": "https://www.bilibili.com",
"cookies": {
"buvid3": generateBuvid3(),
},
},
});
let cardContent = cardRequest;
if (cardContent.code === 0) {
let card = cardContent.data.card
detectComposition(card.mid, card.name, true)
.then((found) => {
let result = {
mid: card.mid,
name: card.name,
level: card.level_info.current_level,
face: card.face,
sign: card.sign ? card.sign : '',
official_title: card.Official.title ? card.Official.title : '',
official_desc: card.Official.desc ? card.Official.desc : '',
official_role: card.Official.role !== 0 ? (
card.Official.role === 1 ? '个人认证 - 知名UP主' : card.Official.role === 2 ? '个人认证 - 大V达人' : card.Official.role === 3 ? '机构认证 - 企业' : card.Official.role === 4 ? '机构认证 - 组织' : card.Official.role === 5 ? '机构认证 - 媒体' : card.Official.role === 6 ? '机构认证 - 政府' : card.Official.role === 7 ? '个人认证 - 高能主播' : card.Official.role === 9 ? '个人认证 - 社会知名人士' : '未知认证角色(' + card.Official.role + ')'
) : '',
official_type: card.Official.type !== -1 ? (
card.Official.type === 0 ? 'UP主认证' : card.Official.type === 1 ? '机构认证' : '未知认证类型(' + card.Official.type + ')'
) : '',
vip: card.vip.vipType !== 0 ? (
card.vip.vipType === 1 ? '月度大会员' : card.vip.vipType === 2 ? '年度大会员(或以上)' : '未知会员(' + card.vip.vipType + ')'
) : '',
found: found.map(it => ({
name: it.displayName,
img: it.displayIcon,
reason: it.reason,
item: it.item,
keyword: it.keyword,
uid: it.uid,
full: it.full
}))
}
resolve(result)
})
.catch(error => {
throw error
})
} else {
throw new CodeError(`获取用户信息失败,错误码:${cardContent.code}`)
}
} catch (error) {
resolve(null);
Swal.showValidationMessage(`失败: ${error}`)
}
})
},
}).then((result) => {
if (result.value) {
let info = result.value
let value = result.value.found;
let final = '';
for (let i = 0; i < value.length; i++) {
let reason = value[i].keyword || value[i].uid
let icon = value[i].img ? (
value[i].img.match("https:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" src="${value[i].img}" class="composition-icon">` :
value[i].img.match("http:") ? `<img referrer="no-referrer" referrerPolicy="no-referrer" src="${value[i].img}" class="composition-icon">` :
value[i].img.match("data:") ? `<img src="${value[i].img}" class="composition-icon">` :
`<span class="composition-icon">${value[i].img}</span>`
) : ''
final += `
<div style="margin-top: 25px;">
<div class="composition-badge">
<a class="composition-name">${value[i].name}</a>
${icon}
</div>
<div style="margin-top: 12px;">
<div class="composition-name">原因:${value[i].reason}${typeof value[i].item === 'string' ? "(" + value[i].item + ")" : ""}</div>
<div class="composition-name">匹配:${reason}</div>
</div>
</div>`;
}
Swal.fire({
title: info.name,
imageUrl: info.face,
imageAlt: `${info.name}的头像`,
imageWidth: 200,
imageHeight: 200,
html: `<div id="Identified">
<div id="tips">${info.sign}</div>
<br/>
<div id="tips" style="color: #fb7299;">LV${info.level}</div>
<div id="tips" style="color: #fb7299;"><a href="https://space.bilibili.com/${info.mid}/" target="_blank" style="color: #fb7299;">UID ${info.mid}</a></div>
<div id="tips" style="color: #fb7299;">${info.vip}</div>
<br/>
<div id="tips" style="color: #ffd700;">${info.official_type}</div>
<div id="tips" style="color: #ffd700;">${info.official_role}</div>
<div id="tips" style="color: #ffd700;">${info.official_title}</div>
<div id="tips" style="color: #ffd700;">${info.official_desc}</div>
<br/>
<div id="tips">因判断关键词较为广泛,可能会出现识别错误的现象<br/>脚本还在测试阶段,喜欢的话还请留下你的评论</div>
${final}
</div>`,
allowOutsideClick: false,
showCloseButton: true,
showConfirmButton: false,
heightAuto: false,
scrollbarPadding: false,
})
}
})
}
if (GM_getValue('Lite') === 'true') {
GM_registerMenuCommand('隐藏用户成分名称(仅显示图片):✅ 已启用', function () {
setting('Lite', '隐藏用户成分名称')
});
} else {
GM_registerMenuCommand('隐藏用户成分名称(仅显示图片):❌ 已禁用', function () {
setting('Lite', '隐藏用户成分名称')
});
}
if (GM_getValue('Auto') === 'true') {
GM_registerMenuCommand('自动检测用户成分(易触发风控):✅ 已启用', function () {
setting('Auto', '自动检测用户成分')
});
} else {
GM_registerMenuCommand('自动检测用户成分(易触发风控):❌ 已禁用', function () {
setting('Auto', '自动检测用户成分')
});
}
function addStyle(id, tag, css) {
tag = tag || 'style';
let doc = document, styleDom = doc.getElementById(id);
if (styleDom) styleDom.remove();
let style = doc.createElement(tag);
style.rel = 'stylesheet';
style.id = id;
tag === 'style' ? style.innerHTML = css : style.href = css;
doc.getElementsByTagName('body')[0].appendChild(style);
}
function addCheckerStyle(text) {
let color = "#574AB8";
let swalcss = `
.swal2-styled{transition: all 0.2s ease;}
.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:${color} transparent }
.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:${color};color:#fff;font-size:1em}
.swal2-styled.swal2-confirm:hover,.swal2-styled.swal2-deny:hover{opacity:0.8;background-image:none!important}
.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px ${color}80}
.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px #dc374180}
.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}
.swal2-timer-progress-bar{width:100%;height:.25em;background:${color}33 }
.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:${color};color:#fff;line-height:2em;text-align:center}
.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:${color} }
.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:${color}}
.swal2-popup {padding:1.25em 0 1.25em;flex-direction:column}
.swal2-close {position:absolute;top:1px;right:1px;transition: all 0.2s ease;}
div:where(.swal2-container) .swal2-html-container{padding: 1.3em 1.3em 0.3em;}
div:where(.swal2-container) button:where(.swal2-close):hover {color:${color}!important;font-size:60px!important}
div:where(.swal2-icon) .swal2-icon-content {font-family: sans-serif;}
`;
let bilicss = `
[class^="composition-check"] {
display: inline-block !important;
cursor: pointer !important;
}
.composition-badge {
display: inline-flex !important;
justify-content: center !important;
align-items: center !important;
width: fit-content !important;
background: ${color}25 !important;
border-radius: 10px !important;
margin: 0 6px 0 6px !important;
font-family: PingFang SC, HarmonyOS_Regular, Helvetica Neue, Microsoft YaHei, sans-serif !important;
font-weight: normal !important;
cursor: pointer !important;
}
.composition-name {
line-height: 13px !important;
font-size: 13px !important;
color: ${color} !important;
padding: 2px 8px !important;
}
.composition-icon {
color: ${color} !important;
background: transparent !important;
border-radius: 50% !important;
width: 25px !important;
height: 25px !important;
border: 2px solid ${color}80 !important;
margin: -6px !important;
margin-right: 6px !important;
display: flex !important;
justify-content: center !important;
align-items: center !important;
font-size: 20px !important;
}
.composition-badge-control {
display: inline-flex !important;
justify-content: center !important;
align-items: center !important;
width: fit-content !important;
background: #00000008 !important;
border-radius: 10px !important;
margin: 0 5px !important;
font-family: PingFang SC, HarmonyOS_Regular, Helvetica Neue, Microsoft YaHei, sans-serif;
}
.composition-name-control {
line-height: 13px !important;
font-size: 12px !important;
color: #00000050 !important;
padding: 2px 8px !important;
}
`;
if (text) return bilicss;
// 先监听颜色方案变化 SweetAlert2-Default
window.matchMedia('(prefers-color-scheme: dark)').addListener((e) => {
if (e.matches) {
// 切换到暗色主题
addStyle('swal-pub-style', 'style', GM_getResourceText('SwalDark'));
} else {
// 切换到浅色主题
addStyle('swal-pub-style', 'style', GM_getResourceText('Swal'));
}
});
// 再修改主题 SweetAlert2-Default
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
// 切换到暗色主题
addStyle('swal-pub-style', 'style', GM_getResourceText('SwalDark'));
} else {
// 切换到浅色主题
addStyle('swal-pub-style', 'style', GM_getResourceText('Swal'));
}
addStyle('SweetAlert2-User', 'style', swalcss);
addStyle('BiliChecker-Style', 'style', bilicss);
};
// 准备好右上角的Toast提示
async function toast(type = 'success', text, refreshOnClick = false) {
let dialog = await Swal.mixin({
toast: true,
position: 'bottom-start',
showConfirmButton: refreshOnClick,
confirmButtonText: '刷新',
showCloseButton: true,
timer: 5000,
scrollbarPadding: true,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer);
toast.addEventListener('mouseleave', Swal.resumeTimer);
}
}).fire({ html: `<span>${text}</span>`, icon: type })
if (dialog.isConfirmed && refreshOnClick) {
window.location.reload(); // 刷新
}
}
// 提示信息
const message = {
success: (text, refresh = false) => {
toast('success', text, refresh)
},
error: (text, refresh = false) => {
toast('error', text, refresh)
},
warning: (text, refresh = false) => {
toast('warning', text, refresh)
},
info: (text, refresh = false) => {
toast('info', text, refresh)
},
question: (text, refresh = false) => {
toast('question', text, refresh)
}
};
class CodeError extends Error {
constructor(message) {
super(message);
this.name = '';
}
}
function generateBuvid3() {
const uuid = () => {
return 'xxxxxx'.replace(/[x]/g, function () {
return Math.floor(Math.random() * 16).toString(16);
});
};
const randomInt = Math.floor(Math.random() * 99999) + 1;
const buvid3 = `${uuid()}${randomInt.toString().padStart(5, '0')}infoc`;
return buvid3;
}
function detectComposition(id, name, single) {
return new Promise(async (resolve, reject) => {
try {
// 存储检测结果的数组
let found = [];
// 存储错误的数组
let errors = [];
// 设定请求
let spaceRequest = request({
url: spaceApiUrl + id,
headers: {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
"referer": "https://www.bilibili.com"
},
});
async function followingRequest() {
let page = 1, totalFollowings, fetchedFollowings = [], maxPages = 2, pageSize, totalPages;
while (true) {
try {
let followingContent = await request({
url: `${followingApiUrl}${id}&pn=${page}`,
headers: {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
},
});
if (followingContent.code === 0) {
let following = followingContent.data.list.map(it => it.mid);
fetchedFollowings = fetchedFollowings.concat(following);
if (page === 1) {
totalFollowings = followingContent.data.total; // 获取关注总数
pageSize = followingContent.data.list.length; // 获取每页数量
// 计算,先得到 大致页数 并与 最多可获取页数 对比然后取其中最小数
totalPages = Math.min(Math.ceil(totalFollowings / pageSize), maxPages);
if (totalPages === 1) break; // 只有一页时,直接结束
}
if (page >= totalPages) break; // 达到最大页数时结束
page++; // 获取下一页
} else if (followingContent.code === 22115) {
console.warn(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的关注列表失败,对方已关闭展示关注列表,错误码:${followingContent.code}`);
break;
} else if (followingContent.code === -352) {
console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的关注列表的第 ${page} 页失败,已触发哔哩哔哩风控,错误码:${followingContent.code}`);
errors.push(new CodeError(`获取关注列表的第 ${page} 页失败,已触发哔哩哔哩风控,错误码:${followingContent.code}`));
break;
} else {
if (fetchedFollowings.length > 0) {
if (debug) console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的关注列表的第 ${page} 页失败,错误码:${followingContent.code}`);
} else {
errors.push(new CodeError(`获取关注列表的第 ${page} 页失败,错误码:${followingContent.code}`));
}
}
} catch (error) {
console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的关注列表的第 ${page} 页时发生错误`, error);
errors.push(error);
}
}
return fetchedFollowings;
}
console.log(`【(改)B站成分检测器】即时\n正在检查用户 ${name} ${id} 的成分...`);
// 检查用户是否在黑名单中
try {
for (let rule of checkers) {
if (rule.blacklist) {
for (let mid of rule.blacklist) {
if (id.includes(mid) && !found.includes(rule)) {
found.push({
...rule,
reason: `黑名单`,
keyword: "uid" + mid
});
if (single) break;
}
}
}
}
} catch (error) {
if (debug) console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 是否在命中名单失败`, error);
errors.push(error);
}
// 检查动态内容
try {
let spaceContent = await spaceRequest;
if (spaceContent.code === 0) {
let items = spaceContent.data.items;
for (let rule of checkers) {
if (rule.keywords) {
for (let i = 0; i < items.length; i++) {
let itemContent = items[i]
let spacefull = items;
let content = itemContent.modules?.module_dynamic?.desc?.text
if (
spacefull && content &&
rule.keywords.find(keyword => JSON.stringify(spacefull).includes(keyword)) &&
rule.keywords.find(keyword => JSON.stringify(content).includes(keyword))
) {
found.push({
...rule,
full: items[i],
reason: `空间动态正文`,
item: content,
keyword: rule.keywords.find(keyword => JSON.stringify(content).includes(keyword))
});
if (single) break;
}
}
}
}
} else if (spaceContent.code === -352) {
console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的空间动态失败,已触发哔哩哔哩风控,错误码:${spaceContent.code}`);
throw new CodeError(`获取空间动态失败,已触发哔哩哔哩风控,错误码:${spaceContent.code}`);
} else {
if (found.length > 0) {
if (debug) console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的空间动态失败,错误码:${spaceContent.code}`);
} else {
throw new CodeError(`获取空间动态失败,错误码:${spaceContent.code}`);
}
}
} catch (error) {
if (debug) console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的空间动态失败`, error);
errors.push(error);
}
// 检查关注列表
try {
let following = await followingRequest()
for (let rule of checkers) {
if (rule.followings) {
for (let mid of rule.followings) {
if (following.includes(mid) && !found.includes(rule)) {
found.push({
...rule,
uid: "uid" + mid,
reason: `关注列表`
});
if (single) break;
}
}
}
}
} catch (error) {
if (debug) console.error(`【(改)B站成分检测器】即时\n获取 ${name} ${id} 的关注列表失败`, error);
errors.push(error);
}
// 返回检测结果
if (found.length > 0) {
console.log(`【(改)B站成分检测器】即时\n检测到 ${name} ${id} 的成分为\n`, JSON.parse(JSON.stringify(found.map(it => { return { name: it.displayName, reason: it.reason, item: it.item, keyword: it.keyword, uid: it.uid, full: it.full } }))))
} else if (errors.length > 0) {
throw new CodeError(errors)
}
resolve(found);
} catch (error) {
if (debug) console.error(`【(改)B站成分检测器】即时\n检测 ${name} ${id} 的成分失败`, error);
reject(error)
}
})
}
/*--- waitForKeyElements(): 一个实用函数,用于 Greasemonkey 脚本,
它可以检测和处理AJAX加载的内容。
此外,此函数还支持在使用 `shadowRoot` 的页面上运行。
使用示例:
base.waitForKeyElements (
"div.comments"
, commentCallbackFunction
);
// 页面特定的函数,用于在找到节点时执行我们想要的操作。
function commentCallbackFunction (jNode) {
jNode.text ("waitForKeyElements() 更改了这段注释。");
}
重要提示:这个函数需要你的脚本加载了jQuery。
*/
function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) {
function findInShadowRoots(root, selector) {
let elements = $(root).find(selector).toArray();
$(root).find('*').each(function () {
const shadowRoot = this.shadowRoot;
if (shadowRoot) {
elements = elements.concat(findInShadowRoots(shadowRoot, selector));
}
});
return elements;
}
var targetElements;
if (iframeSelector) {
targetElements = $(iframeSelector).contents();
} else {
targetElements = $(document);
}
let allElements = findInShadowRoots(targetElements, selectorTxt);
if (allElements.length > 0) {
allElements.forEach(function (element) {
var jThis = $(element);
var alreadyFound = jThis.data('alreadyFound') || false;
if (!alreadyFound) {
var cancelFound = actionFunction(jThis);
if (cancelFound) {
return false;
} else {
jThis.data('alreadyFound', true);
}
}
});
}
var controlObj = waitForKeyElements.controlObj || {};
var controlKey = selectorTxt.replace(/[^\w]/g, "_");
var timeControl = controlObj[controlKey];
if (allElements.length > 0 && bWaitOnce && timeControl) {
clearInterval(timeControl);
delete controlObj[controlKey];
} else {
if (!timeControl) {
timeControl = setInterval(function () {
waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector);
}, 1000);
controlObj[controlKey] = timeControl;
}
}
waitForKeyElements.controlObj = controlObj;
}
})