哔哩哔哩-API收集整理:历史记录与稍后再看功能实现
你是否曾在浏览哔哩哔哩(Bilibili)时遇到过这样的困扰:看到一半的视频被打断,想稍后继续却找不到位置?或者想回顾上周看过的某个精彩片段,却在海量内容中迷失方向?本文将为你详细介绍如何利用哔哩哔哩开放的API(Application Programming Interface,应用程序编程接口)实现历史记录和稍后再看功能,让你的视频观看体验更加流畅便捷。读完本文,你将能够掌握如何调用相关API接口,实现查看历史记录、添加视频到稍后再看列表、管理列表等操作。
功能概述与应用场景
在开始深入技术细节之前,让我们先了解一下这两个功能的基本概念和常见应用场景。
历史记录功能如同你的个人视频浏览日记,它会自动记录你在哔哩哔哩上观看过的所有视频内容,包括视频标题、观看时间、观看进度等信息。这对于那些经常回顾过去观看内容的用户来说非常实用。例如,你可能在几天前看过一个关于Python编程技巧的视频,现在想复习其中的某个知识点,通过历史记录就能快速找到该视频,并从上次停止的地方继续观看。
稍后再看功能则像是一个临时的视频收藏夹,当你遇到感兴趣但当下没有时间观看的视频时,可以将其添加到稍后再看列表,方便日后集中观看。比如,在上班途中刷到一个长达一小时的纪录片,你可以先将其加入稍后再看列表,等到周末有空闲时间时再慢慢欣赏。
项目中与这两个功能相关的核心文档分别是 历史记录API文档 和 稍后再看API文档,你可以通过这两个链接查看更详细的接口定义和参数说明。
历史记录功能实现详解
历史记录功能主要通过调用哔哩哔哩提供的API接口来获取用户的观看历史数据。下面我们将详细介绍如何实现获取历史记录列表的功能。
获取历史记录列表(Web端)
要获取用户的历史记录列表,我们需要调用Web端的历史记录API接口:https://api.bilibili.com/x/web-interface/history/cursor,请求方式为GET,并且需要通过Cookie(SESSDATA)进行认证。
该接口的URL参数如下表所示:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| max | num | 历史记录截止目标 id | 非必要 | 默认为 0 稿件:稿件 avid 剧集(番剧 / 影视):剧集 ssid 直播:直播间 id 文集:文集 rlid 文章:文章 cvid |
| business | str | 历史记录截止目标业务类型 | 非必要 | 默认为空 archive:稿件 pgc:剧集(番剧 / 影视) live:直播 article-list:文集 article:文章 |
| view_at | num | 历史记录截止时间 | 非必要 | 时间戳 默认为 0 0 为当前时间 |
| type | str | 历史记录分类筛选 | 非必要 | all:全部类型(默认) archive:稿件 live:直播 article:文章 |
| ps | num | 每页项数 | 非必要 | 默认为 20,最大 30 |
其中,max、business、view_at这三个参数用于实现历史记录列表的无限滚动加载,其用法类似于链表的next指针,通过不断传递上一次请求返回的最后一项的相关参数,来获取后续的历史记录数据。
下面是一个使用curl命令获取当前时间截止的5条历史记录的示例:
curl -G 'https://api.bilibili.com/x/web-interface/history/cursor' \
--data-urlencode 'ps=5' \
-b 'SESSDATA=xxx'
在这个示例中,ps=5表示我们希望每页返回5条历史记录,-b 'SESSDATA=xxx'用于传递认证Cookie。
接口返回的JSON数据中,data对象包含了历史记录的详细信息,其中cursor对象包含了下一次请求所需的分页参数,list数组则包含了具体的历史记录项。每个历史记录项包含了视频标题、封面图、观看时间、观看进度等信息,你可以根据这些信息在自己的应用中展示用户的历史记录列表。
稍后再看功能实现详解
稍后再看功能允许用户将感兴趣的视频添加到一个专门的列表中,以便日后观看。这个功能涉及到添加视频到列表、获取列表、删除列表中的视频等操作,下面我们将逐一介绍。
添加视频到稍后再看列表
要将视频添加到稍后再看列表,我们需要调用https://api.bilibili.com/x/v2/history/toview/add接口,请求方式为POST,同样需要通过Cookie(SESSDATA)进行认证。需要注意的是,稍后再看列表最多只能添加100个视频。
该接口的正文参数(application/x-www-form-urlencoded)如下:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 |
| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 |
| csrf | str | CSRF Token(位于cookie) | 必要 |
你可以选择使用avid或bvid来指定要添加的视频,下面是两个添加视频到稍后再看列表的示例:
avid方式:
curl 'https://api.bilibili.com/x/v2/history/toview/add' \
--data-urlencode 'aid=41687433' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
bvid方式:
curl 'https://api.bilibili.com/x/v2/history/toview/add' \
--data-urlencode 'bvid=BV1ht41147kj' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
接口返回的JSON数据中,code字段为0表示添加成功,其他值则表示添加失败,具体的错误信息可以通过message字段查看。例如,如果列表已满,会返回code=90001,message提示“列表已满”。
获取稍后再看视频列表
要获取用户的稍后再看视频列表,我们需要调用https://api.bilibili.com/x/v2/history/toview接口,请求方式为GET,同样需要Cookie(SESSDATA)认证。
接口返回的JSON数据中,data对象包含了稍后再看列表的信息,其中count字段表示稍后再看视频的总数,list数组则包含了具体的视频项。每个视频项包含了视频的标题、封面图、UP主信息、时长等详细数据,你可以根据这些数据在应用中展示稍后再看列表。
下面是一个使用curl命令获取稍后再看视频列表的示例:
curl 'https://api.bilibili.com/x/v2/history/toview' \
-b 'SESSDATA=xxx'
删除稍后再看视频
当用户观看完稍后再看列表中的视频后,可能需要将其从列表中删除。删除操作可以通过调用https://api.bilibili.com/x/v2/history/toview/del接口来实现,请求方式为POST,需要Cookie认证和CSRF Token。
该接口的正文参数如下:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| viewed | bool | 是否删除所有已观看的视频 | 非必要 | true:删除已观看视频 false:不删除已观看视频 默认为false |
| aid | num | 删除的目标记录的avid | 非必要 | |
| csrf | str | CSRF Token(位于cookie) | 必要 |
你可以通过指定aid参数来删除单个视频,或者将viewed参数设置为true来删除所有已观看的视频。下面是两个删除示例:
删除单个视频:
curl 'https://api.bilibili.com/x/v2/history/toview/del' \
--data-urlencode 'aid=540580868' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
删除所有已观看视频:
curl 'https://api.bilibili.com/x/v2/history/toview/del' \
--data-urlencode 'viewed=true' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
此外,如果你想清空整个稍后再看列表,可以调用https://api.bilibili.com/x/v2/history/toview/clear接口,请求方式为POST,只需传递CSRF Token参数即可。
接口调用流程与注意事项
在实际应用中,调用这些API接口时需要遵循一定的流程,并注意一些细节问题,以确保功能的稳定运行。
接口调用流程
- 用户认证:几乎所有的历史记录和稍后再看相关API接口都需要用户登录后才能调用,因此在调用接口之前,需要确保用户已经通过Cookie(SESSDATA)进行了认证。
- 参数传递:在调用接口时,需要根据接口文档的要求正确传递参数。例如,获取历史记录列表时,需要根据需要传递分页参数;添加视频到稍后再看列表时,需要正确传递avid或bvid。
- 数据处理:接口返回的数据通常是JSON格式,需要对其进行解析和处理,提取出需要的信息并展示给用户。
- 错误处理:在调用接口的过程中,可能会遇到各种错误,如认证失败、参数错误、服务器异常等。需要对这些错误进行捕获和处理,并给用户友好的提示。
注意事项
- API接口的版本和稳定性:哔哩哔哩的API接口可能会随着版本的更新而发生变化,因此在开发过程中,需要密切关注官方的API文档更新,确保使用的接口是最新且稳定的。
- 请求频率限制:为了保证服务器的稳定运行,哔哩哔哩可能会对API接口的请求频率进行限制。在开发应用时,需要合理控制请求频率,避免因频繁请求而被限制访问。
- 用户隐私保护:历史记录和稍后再看列表包含了用户的个人观看习惯等隐私信息,在开发应用时,需要严格遵守相关的隐私保护法规,确保用户数据的安全。
- 数据缓存:为了提高应用的性能和减少对服务器的请求压力,可以对获取到的历史记录和稍后再看列表数据进行适当的缓存,但需要注意缓存的时效性,避免展示过期数据。
总结与展望
通过本文的介绍,我们详细了解了如何利用哔哩哔哩提供的API接口实现历史记录和稍后再看功能。历史记录功能可以帮助用户回顾过去观看的视频,而稍后再看功能则可以让用户更灵活地安排自己的观看时间,这两个功能的结合可以极大地提升用户的视频观看体验。
在未来,随着哔哩哔哩API的不断完善和扩展,我们可以期待更多有趣和实用的功能被开发出来。例如,可以基于历史记录数据为用户提供个性化的视频推荐,或者将稍后再看列表与其他设备进行同步,实现跨设备的视频观看体验。
希望本文对你理解和实现哔哩哔哩的历史记录与稍后再看功能有所帮助。如果你在开发过程中遇到任何问题,可以查阅项目中的相关文档,如 历史记录API文档 和 稍后再看API文档,也可以在项目的GitHub仓库中提交issue寻求帮助。
最后,如果你觉得本文对你有帮助,不妨点赞、收藏并关注我们,以便获取更多关于哔哩哔哩API开发的实用教程和技巧。我们下期将为大家介绍如何利用哔哩哔哩API实现视频弹幕的发送和获取功能,敬请期待!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




