B站漫画阅读历史接口开发:基于哔哩哔哩-API收集整理的阅读记录实现

B站漫画阅读历史接口开发:基于哔哩哔哩-API收集整理的阅读记录实现

【免费下载链接】bilibili-API-collect 哔哩哔哩-API收集整理【不断更新中....】 【免费下载链接】bilibili-API-collect 项目地址: https://gitcode.com/GitHub_Trending/bi/bilibili-API-collect

你是否曾想过开发一个工具来追踪自己在B站漫画的阅读历史?本文将详细介绍如何利用哔哩哔哩-API收集整理项目中的接口,实现漫画阅读历史的获取功能,无需复杂编程知识,只需简单几步即可完成。

接口选择与分析

在开发漫画阅读历史功能前,我们需要确定合适的API接口。通过查阅项目文档,发现有两个关键接口与此相关:

  1. 获取已购漫画接口:位于docs/manga/User.md,提供用户购买的漫画列表信息
  2. 获取历史记录列表接口:位于docs/historytoview/history.md,提供用户在B站的各类内容浏览历史

这两个接口结合使用,可以完整实现漫画阅读历史的获取功能。前者提供用户拥有的漫画信息,后者提供阅读记录数据,二者结合可以构建完整的阅读历史追踪系统。

漫画阅读流程图

认证方式说明

访问这些接口需要进行身份验证,支持以下两种方式:

  • Cookie认证:使用SESSDATA Cookie值
  • APP认证:使用access_key参数

对于普通用户,推荐使用Cookie认证方式,只需在请求头中添加Cookie信息即可。认证失败时接口会返回-101错误码,表示账号未登录。

已购漫画接口详解

接口基本信息

  • URL:https://manga.bilibili.com/twirp/user.v1.User/GetAutoBuyComics
  • 请求方式:POST
  • 认证方式:Cookie(SESSDATA)/ APP

请求参数

参数名类型内容必要性备注
page_numnum页数必要
page_sizenum分页大小必要默认15

示例代码

curl -L -X POST 'https://manga.bilibili.com/twirp/user.v1.User/GetAutoBuyComics' \
-H "Cookie: xxxxx" \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36' \
-d '{"page_num": 1,"page_size": 15}'

返回数据说明

接口返回的JSON数据中,data数组包含已购漫画信息,每项包含以下关键字段:

字段类型内容备注
comic_idstr漫画id
comic_titlestr漫画标题
hcoverstr横版头图
scoverstr方形头图
vcoverstr竖版封面图
bought_ep_countnum已购章节数
last_ordnum最后一话
ctimestr获取时间
last_short_titlestr最后一话的短标题

历史记录接口详解

接口基本信息

  • URL:https://api.bilibili.com/x/web-interface/history/cursor
  • 请求方式:GET
  • 认证方式:Cookie (SESSDATA)

请求参数

参数名类型内容必要性备注
maxnum历史记录截止目标 id非必要默认为 0
稿件:稿件 avid
剧集(番剧 / 影视):剧集 ssid
直播:直播间 id
文集:文集 rlid
文章:文章 cvid
businessstr历史记录截止目标业务类型非必要默认为空
archive:稿件
pgc:剧集(番剧 / 影视)
live:直播
article-list:文集
article:文章
view_atnum历史记录截止时间非必要时间戳
默认为 0
0 为当前时间
typestr历史记录分类筛选非必要all:全部类型(默认)
archive:稿件
live:直播
article:文章
psnum每页项数非必要默认为 20,最大 30

示例代码

curl -G 'https://api.bilibili.com/x/web-interface/history/cursor' \
--data-urlencode 'ps=5' \
--data-urlencode 'type=archive' \
-b 'SESSDATA=xxx'

返回数据说明

接口返回的JSON数据中,list数组包含历史记录信息,每项漫画记录包含以下关键字段:

字段类型内容备注
titlestr条目标题
coverstr条目封面图 url用于专栏以外的条目
view_atnum查看时间时间戳
progressnum视频观看进度单位为秒
用于稿件视频或剧集
durationnum视频总时长用于稿件视频或剧集
historyobj条目详细信息

history对象中的关键字段:

字段类型内容备注
oidnum目标id稿件视频&剧集:稿件avid
直播:直播间id
文章:文章cvid
businessstr业务类型archive:稿件
pgc:剧集
live:直播
article:文章

实现漫画阅读历史功能的步骤

步骤一:获取已购漫画列表

首先调用GetAutoBuyComics接口获取用户已购买的漫画列表,保存漫画ID和基本信息。这一步可以确定用户拥有哪些漫画,为后续筛选漫画阅读历史做准备。

步骤二:获取全部历史记录

调用历史记录接口获取用户在B站的全部浏览历史,通过设置合适的参数控制返回数据量。建议分页获取,每次获取30条记录(最大限制)。

步骤三:筛选漫画阅读记录

将历史记录中与已购漫画匹配的记录筛选出来,形成漫画阅读历史。可以通过以下方式进行匹配:

  1. 检查历史记录的business字段是否为"pgc"(表示剧集/番剧/漫画)
  2. 将历史记录的oidkid与已购漫画的comic_id进行匹配
  3. 提取匹配记录的标题、封面、观看时间和进度等信息

步骤四:数据处理与展示

对筛选出的漫画阅读历史数据进行处理,按观看时间排序,并计算阅读进度百分比:

阅读进度百分比 = (progress / duration) * 100%

然后可以将处理后的数据展示在页面上,显示漫画封面、标题、最近阅读时间和阅读进度等信息。

漫画阅读进度

常见问题解决

认证失败

如果接口返回-101错误码,表示认证失败。解决方法:

  1. 确保Cookie中的SESSDATA有效
  2. 检查Cookie是否正确传递
  3. 如果SESSDATA过期,重新登录获取新的SESSDATA

历史记录不完整

如果返回的历史记录不完整,可能是因为:

  1. 未正确分页获取,需要使用cursor参数进行分页请求
  2. 历史记录数量超过接口限制,只能获取最近的部分记录
  3. 筛选参数设置不当,检查type和business参数是否正确

漫画匹配不准确

如果出现漫画匹配不准确的问题:

  1. 检查匹配逻辑是否正确,可能需要同时匹配多个字段
  2. 考虑使用标题模糊匹配作为辅助手段
  3. 注意不同类型漫画的business字段可能不同

总结

通过结合使用已购漫画接口和历史记录接口,我们可以实现一个功能完善的B站漫画阅读历史系统。这个系统可以帮助用户追踪自己的漫画阅读进度,记录阅读历史,为漫画爱好者提供更好的阅读体验。

项目中还有更多API接口可以探索和使用,如获取漫读券列表漫画章节信息等,可以进一步扩展功能,实现更丰富的漫画阅读辅助工具。

漫画图标

希望本文能帮助你快速开发出自己的B站漫画阅读历史功能。如有任何问题,欢迎查阅项目文档或提交issue反馈。

【免费下载链接】bilibili-API-collect 哔哩哔哩-API收集整理【不断更新中....】 【免费下载链接】bilibili-API-collect 项目地址: https://gitcode.com/GitHub_Trending/bi/bilibili-API-collect

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值