Skip to content

GeoSyntax/bilibili-auto-subtitle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

bilibili-auto-subtitle

一个用于 B 站视频页的 Tampermonkey 油猴脚本:自动检测当前视频字幕情况,并在检测到 AI 字幕时按你的设置自动开启 AI 字幕。同时提供可视化面板、提示气泡、自定义快捷键、面板隐藏与状态记忆等功能。

功能特性

  • 自动检测当前视频是否存在 AI 字幕
  • 检测到 AI 字幕时,会按设置自动尝试开启
  • 你可以通过面板或快捷键控制“是否自动开启 AI 字幕”
  • 开关变更会立即作用到当前视频
  • 支持 B 站 SPA 路由切换
  • 支持多 P / cid 变化重新判断
  • 分 P 切换时支持轮询字幕状态,确保 AI 字幕自动开启
  • 右下角悬浮控制面板
  • 支持开启 / 关闭自动功能
  • 支持隐藏 / 显示控制面板
  • 支持提示气泡自动淡出
  • 支持自定义快捷键(通过 Tampermonkey 菜单设置)
  • 支持设置 AI 字幕语言偏好(当前支持中文 / 英文,默认中文)
  • 自动开启 AI 字幕时,优先选择偏好语言,不存在时自动回退到可用 AI 字幕
  • 记住自动功能开关状态
  • 记住面板显示 / 隐藏状态
  • 记住 AI 字幕语言偏好
  • 对同一视频的普通字幕检测结果做缓存,减少重复检测

文件说明

  • bilibili-auto-ai-subtitle.user.js:油猴脚本主文件

安装方法

方法零:Greasy Fork 直接安装(推荐)

方法一:本地导入

  1. 先安装浏览器扩展:
    • Tampermonkey
  2. 打开 Tampermonkey 管理面板。
  3. 选择“创建新脚本”或“导入”。
  4. bilibili-auto-ai-subtitle.user.js 文件内容完整粘贴进去。
  5. 保存脚本。
  6. 打开任意 B 站视频页进行测试。

方法二:从 GitHub 原始文件导入

上传到 GitHub 后,可以打开该脚本文件的 Raw 链接,Tampermonkey 通常会自动识别并提示安装。

油猴导入使用技巧

1. 推荐开启开发者模式 / 允许用户脚本运行

不同浏览器对脚本安装提示策略不同,如果没有自动弹出安装页:

  • 先确认 Tampermonkey 已启用
  • 刷新目标页面后重新打开脚本链接
  • 检查扩展是否允许在当前站点运行

2. 修改脚本后要重新保存 / 重新安装

如果你手动修改了 .user.js 文件:

  • 需要重新复制到 Tampermonkey 中保存
  • 或重新打开新的 Raw 链接重新安装

3. B 站是单页应用,测试时建议验证以下场景

  • 直接打开视频页
  • 站内跳转到另一个视频
  • 多 P 视频切换分 P
  • 视频存在 AI 字幕时是否会自动开启
  • 切换 AI 字幕自动开关时,当前视频是否立即生效
  • 手动关闭后重新开启
  • 面板隐藏后再恢复

4. 快捷键冲突时可用油猴菜单修改

在 Tampermonkey 脚本菜单中,可以设置:

  • 自动开关快捷键
  • 面板显隐快捷键
  • AI 字幕语言偏好(中文 / 英文)

脚本会自动保存你的快捷键配置和 AI 字幕语言偏好。

使用说明

面板功能

右下角会显示一个悬浮面板,例如:

  • AI字幕自动开:开|偏好:中文(Alt+A)
  • AI字幕自动开:关|偏好:英文(Alt+A)

点击主按钮可以切换“是否自动开启 AI 字幕”的设置。 点击 × 可以隐藏面板。

默认快捷键

  • Alt+A:切换自动 AI 字幕功能
  • Alt+H:显示 / 隐藏控制面板

自定义快捷键

打开 Tampermonkey 脚本菜单,可以看到:

  • 设置自动开关键
  • 设置面板显隐键

支持输入例如:

  • Alt+A
  • Shift+S
  • Ctrl+Alt+Z

提示气泡

进行以下操作时,会出现自动淡出的提示:

  • 开启自动 AI 字幕
  • 关闭自动 AI 字幕
  • 隐藏面板
  • 显示面板
  • 修改快捷键

当前字幕逻辑

自动模式

脚本会优先检测当前视频是否存在 AI 字幕:

  • 如果检测到 AI 字幕 → 自动尝试开启 AI 字幕,并优先选择你设置的 AI 字幕语言
  • 如果当前视频没有你偏好的 AI 字幕语言 → 自动回退到任意可用 AI 字幕
  • 如果没有检测到 AI 字幕 → 不做任何操作

自动开关设置

你可以通过:

  • 点击右下角面板按钮
  • 使用你设置的自动开关快捷键

来控制当前脚本是否自动尝试开启 AI 字幕。

开启后,脚本会在检测到 AI 字幕时自动尝试切换到你设置的偏好语言;如果当前视频不存在该语言,则自动回退到其他可用 AI 字幕。这个设置会立即作用到当前视频:当前视频有 AI 字幕时会立即尝试开启,关闭时会立即尝试关闭当前字幕。

工作原理

脚本会优先通过结构化数据、接口与 DOM 组合方式检测字幕情况,并在需要开启 AI 字幕时按以下顺序选择字幕项:

  1. 优先匹配你设置的语言(例如 ai-zh / ai-en
  2. 再根据节点文本、data-landata-value 等属性匹配语言标识
  3. 如果当前视频不存在偏好语言,则回退到任意可用 AI 字幕项

同时脚本会尝试区分:

  • AI 字幕
  • 普通字幕 / 人工字幕

并根据规则决定是否自动切换。

性能说明

这个脚本更偏向:

  • 事件驱动 + 轻量轮询(分 P 场景补偿)
  • 有限重试
  • 同视频结果缓存

这意味着:

  • 常驻资源占用较低
  • 分 P 时以低频轮询保障自动开启

常见问题

1. 为什么某些视频没有反应?

可能原因:

  • 当前视频没有 AI 字幕
  • 当前视频没有可用 AI 字幕
  • B 站页面结构发生变化
  • 当前字幕按钮 / 字幕项选择器失效
  • 页面尚未加载完成

2. 为什么我手动关闭后脚本不立即重开?

这是刻意设计:

  • 避免脚本和用户抢控制权
  • 你可以通过面板或快捷键再次手动开启

3. 为什么开启了自动 AI 字幕,但当前视频还是没有变化?

可能原因包括:

  • 当前视频没有可用 AI 字幕
  • 当前视频还没加载到可识别的字幕项
  • B 站页面结构发生变化,导致当前选择器未命中

4. 为什么隐藏面板后找不到了?

使用快捷键:

  • 默认 Alt+H

如果你改过快捷键,请在 Tampermonkey 菜单里查看或重新设置。

效果图

下图展示了脚本在 B 站视频页中的实际运行效果:右下角会显示悬浮控制面板,页面左下区域可看到 AI 字幕标签,便于确认当前脚本已生效。

脚本运行效果

开发与同步

如果你本地修改后想同步到 GitHub:

git status
git add README.md bilibili-auto-ai-subtitle.user.js .gitignore
git commit -m "Update userscript"
git push

如果你通过 Greasy Fork 发布脚本:

  • 用户自动更新通常取决于 Greasy Fork 上已发布的最新版本
  • 每次发布前请记得递增 @version
  • 仅更新 GitHub 并不会自动等于 Greasy Fork 已发布新版本,除非你在 Greasy Fork 侧正确配置了外部同步源

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors