您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
一键三连健康探针(BiliHealth Scan)显示b站 | bilibili | 哔哩哔哩 点赞率、投币率、收藏率、转发率及Steam综合评级
当前为
一键三连健康探针是一款优雅的 B 站视频互动数据可视化工具。通过智能算法,自动展示视频的点赞率、投币率、收藏率、转发率及综合评分,助您快速洞察视频质量。
BiliHealth Scan 即将迎来 2.0 大版本!本次重大升级,我对好评率算法、评级体系、交互体验等核心功能进行了全方位的重构与优化, 致力于为每一位内容创作者和观众带来更公平、更科学、更人性化的视频质量评价。
BiliHealth Scan 2.0 不仅是一次算法升级,更是一次理念的进化。我希望通过更科学的评价体系,帮助优质内容被更多人发现,也让每一位创作者都能获得更公平的认可。感谢大家一路以来的支持与反馈,2.0 版本即将上线,敬请期待!
✨ 1. 切换视频时≈xx%精准替换与同步:
data-bh-type
标记每个≈xx%,提升DOM操作效率和兼容性。✅ 2. 收藏与转发数据刷新优化:
🔧 3. 其它细节体验优化和小bug修复。
-apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif
),视觉风格高度一致。所有评级、统计、好评率等区域字体不再加粗,权重统一为 font-weight: 400
(视频详情页为 500),字号、行高等自适应,兼容多分辨率。
视频详情页样式增强
详情页所有自定义展示区(综合评级、好评率、各项比率、复制按钮等)字体族、字号、字重、行高全部与主站一致,细节高度还原官方风格。
解决了部分区域字体不一致、加粗、字号不统一等问题。
自适应与兼容性提升
统计信息、好评率、评级标签等在不同页面、不同卡片、不同分辨率下均能自适应字体大小和风格。
彻底消除因原生样式或浏览器默认字体导致的视觉割裂。
在"一键三连健康探针"脚本中,我们使用一套加权计算方法来评估视频的互动率,并将其转化为好评率。
在进行计算之前,首先通过 normalizeData(rawData)
函数对从 Bilibili API 获取的原始统计数据进行标准化处理,确保播放量(view)、点赞(like)、投币(coin)、收藏(favorite)、分享(share)字段都存在且为非负整数。
normalizeData(rawData) {
return {
view: parseInt(rawData.view) || 0,
like: parseInt(rawData.like) || 0,
coin: parseInt(rawData.coin) || 0,
favorite: parseInt(rawData.favorite) || 0,
share: parseInt(rawData.share) || 0
};
}
核心的加权互动比率计算在 calculateWeightedRatio(data)
函数中完成。
calculateWeightedRatio(data) {
// 播放量小于1000的视频直接返回0(此判断在getDisplayRatio中处理更全面)
// if (data.view < 1000) return 0;
const weightedInteractions =
(data.like * this.WEIGHTS.like) +
(data.coin * this.WEIGHTS.coin) +
(data.favorite * this.WEIGHTS.favorite) +
(data.share * this.WEIGHTS.share);
// 计算加权互动比率并乘以300作为基础值
return ((weightedInteractions / data.view) * 100 * 3).toFixed(2);
}
这里使用了 INTERACTION_WEIGHTS
常量来定义不同互动类型的权重:
const INTERACTION_WEIGHTS = {
like: 1,
coin: 8,
favorite: 4,
share: 6,
};
根据这些权重,投币和分享在计算时对总分的影响比点赞和收藏更大。计算出的加权互动总和除以播放量,再乘以 100 得到百分比,最后乘以 3 得到一个基础的"权重互动比率"。
为了避免低播放量视频因偶然的高互动率而获得虚高的评分,我们在 getDisplayRatio
函数中引入了播放量分级和对应的好评率上限。这是您最近优化的部分。
// 定义播放量阈值和对应的最大好评率上限(1.8.4修正)
const VIEW_THRESHOLDS = [
{ view: 1000, maxRatio: 51.99 }, // <= 1千播放量,好评率不能成功52%
{ view: 50000, maxRatio: 85.99 }, // <= 5万播放量,好评率不能成功86%
{ view: 350000, maxRatio: 90.99 }, // <= 35万播放量,好评率不能成功91%
{ view: 500000, maxRatio: 96.99 } // <= 50万播放量,好评率不能成功97%
];
// ... (在getDisplayRatio函数中) ...
let currentRatio = ratio; // 原始计算出的加权互动比率
// 对于播放量小于1000的视频,直接返回0
if (data.view < 1000) return "0.00";
// 根据播放量应用好评率上限
for (const threshold of VIEW_THRESHOLDS) {
if (data.view <= threshold.view) {
currentRatio = Math.min(currentRatio, threshold.maxRatio);
//console.log(`[BiliHealth Scan] View ${data.view} <= ${threshold.view}, capped ratio to ${threshold.maxRatio}. Original ratio: ${ratio.toFixed(2)}`); // Debugging log
break; // 找到匹配的最低阈值后停止
}
}
// 后续的评级和展示都基于这个应用了上限的 currentRatio
// ... (见 评级与颜色逻辑 文档) ...
这段逻辑确保了:
对于播放量高于 50 万的视频,将不受这些上限的限制,使用原始计算结果进行后续处理。
这些逻辑共同构成了脚本评估视频"健康度"的基础。
本工具数据来源于 B 站公开信息,评分基于统计学模型,仅供参考。用户应结合自身判断使用,开发者不对评分结果承担责任。