作品 · 02
B视机 · BTelly
第三方 Bilibili 电视与车机客户端 —— 非官方、无广告,Kotlin + Koin 打造的双播放内核、弹幕评论与空降助手,把客厅和车里那块屏幕还给观众。
查看仓库 › Codeberg ›为什么做它
电视和车机上的 Bilibili 体验长期是块洼地:官方客户端在遥控器与车机交互上一直是将就的状态,广告与信息噪音却一样不少。我只是想在客厅那张沙发上、在通勤那一个小时里,安安静静看关注的人更新了什么。第三方客户端的意义从来不是”破解”,是把一块本属于观众的屏幕还给观众。
难点在哪
- 端点的考古学:第三方客户端天然活在”接口随时失效”的环境里。关注列表接口失效那一次,连公开的接口收集仓库都被清空了,最后是从另一个开源客户端的源码里把正确端点挖出来,再按真实响应逐字段纠正直觉——封面字段叫什么、分页结束标记由谁下发、正在直播数从哪来,全靠比对真实流量,不靠猜。
- 车机与电视的双形态:同样是十英尺界面,电视要遥控器方向键的焦点流转,车机要的是行车途中零思考的操作。两套交互哲学要在同一个代码库里共存。
- 水印与署名:署名不能只写在 README 里。构建期就把作者身份、仓库来源烧进产物,应用内可见、可自检——这是第三方项目对使用者最基本的诚实。
现状
- 双播放内核、弹幕评论、空降助手,无广告无信息流插桩
- 「我的关注」直播页按「正在直播 / 未开播」分组,开播中全量展示并分页加载,未开播置灰可直跳个人空间
- 应用内更新双通道(GitHub 主 + Codeberg 备),主渠道失败自动回退,装机即可自我更新
- Mac 构建机出包验签,GitHub Actions 与本地产物同证书一致
我学到的
维护一个”寄生”于他人接口的项目,最重要的能力不是写新功能,而是接口失效时多快能站起来。把网络层收拢成独立模块、把端点与字段的考古过程留档、把署名做进产物而不是文档——这些在顺利的时候都是多余,在接口翻脸的那一天全是救命。另外,两度账号被封也教会我一件事:镜像渠道不是备份的仪式,是真的会派上用场的那条路。