B站漫画下载接口详解:哔哩哔哩-API收集整理中的离线阅读功能

B站漫画下载接口详解:哔哩哔哩-API收集整理中的离线阅读功能

你是否曾遇到在通勤途中想看漫画却苦于网络不稳定的情况?是否希望将喜欢的B站漫画保存到本地,随时离线阅读?本文将详细解析B站漫画下载接口的使用方法,基于哔哩哔哩-API收集整理项目中的离线阅读功能,帮助你轻松实现漫画的本地存储与阅读。读完本文后,你将能够掌握获取漫画图片地址、获取图片token以及最终下载图片的完整流程。

漫画下载接口概述

B站漫画下载功能主要通过一系列API接口实现,包括获取当前话全部图片地址、获取图片token以及下载图片。这些接口的详细定义可以在项目的docs/manga/Download.md文件中找到。通过这些接口,用户可以将漫画章节的图片保存到本地,实现离线阅读。

漫画下载流程

获取当前话全部图片地址

要下载漫画,首先需要获取当前话所有图片的地址。这一步通过调用GetImageIndex接口实现。

接口基本信息

  • 接口地址:https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex
  • 请求方式:POST
  • 认证方式:Cookie(SESSDATA)/ APP

URL参数

参数名类型内容必要性备注
access_keystrAPP登录凭证必要使用APP鉴权方式时必填
appkeystrcc8617fd6961e070非必要
mobi_appstrandroid_comic非必要
versionstr4.21.0非必要
buildstr36421000非必要
channelstrbilicomic非必要
platformstrandroid非必要
devicestrandroid非必要
buvidstrXY118701XXXXXXXXX104911DXXXXXCAEXXXXE非必要长度为37
machinestr 非必要手机品牌+型号
is_teenagernum0非必要
no_recommendnum0非必要
tsnum秒级时间戳非必要

正文参数

参数名类型内容必要性备注
epId(ep_id)num当前话的id必要

请求示例

curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex' \
-H 'Cookie: SESSDATA=xxx;' \
-H 'Content-Type: application/json' \
--data-raw '{
    "ep_id": 321912
}'

响应示例

查看响应示例
{
  "code": 0,
  "msg": "",
  "data": {
    "path": "/bfs/manga/26564/321912/data.index?token=80eab62fef85c1c134a6399f817a938f&ts=63404145",
    "images": [
      {
        "path": "/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      },
      {
        "path": "/bfs/manga/bf1c48540b68f473b429317d8f6fa8cdb6eed3a5.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      },
      {
        "path": "/bfs/manga/a46cfe90cfb49c67a4dbfc0002e5bc3d87d02963.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      }
    ],
    "last_modified": "2019-05-13 21:15:53",
    "host": "https://manga.hdslb.com",
    "video": {
      "svid": "",
      "filename": "",
      "route": "",
      "resource": [],
      "raw_width": "0",
      "raw_height": "0",
      "raw_rotate": "0",
      "img_urls": [],
      "bin_url": "",
      "img_x_len": 10,
      "img_x_size": 160,
      "img_y_len": 10,
      "img_y_size": 90
    }
  }
}

通过上述请求,我们可以得到当前话所有图片的路径、宽度、高度等信息,为后续下载图片做好准备。

获取图片token

获取到图片地址后,还需要获取图片的token才能进行下载。这一步通过调用ImageToken接口实现。

接口基本信息

  • 接口地址:https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken
  • 请求方式:POST
  • 认证方式:Cookie(SESSDATA)/ APP

URL参数

参数名类型内容必要性备注
access_keystrAPP登录凭证必要使用APP鉴权方式时必填
appkeystrcc8617fd6961e070非必要
mobi_appstrandroid_comic非必要
versionstr4.21.0非必要
buildstr36421000非必要
channelstrbilicomic非必要
platformstrandroid非必要
devicestrandroid非必要
buvidstrXY118701XXXXXXXXX104911DXXXXXCAEXXXXE非必要长度为37
machinestrsamsung+SM-G9730非必要手机品牌+型号
is_teenagernum0非必要
no_recommendnum0非必要
tsnum秒级时间戳非必要

正文参数

参数名类型内容必要性备注
urlsstr请求token的图片地址必要[\"https://i0.hdslb.com{path}\"]
{path}代表图片的相对网站路径,支持jpg和webp

请求示例

curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken' \
-H 'Cookie: SESSDATA=xxx;' \
-H 'Content-Type: application/json' \
--data-raw '{
    "urls": "[\"https://i0.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg\"]"
}'

响应示例

查看响应示例
{
  "code": 0,
  "msg": "",
  "data": [
    {
      "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
      "token": "36931815abb35857627a22c347dc1c86&ts=634045c2"
    }
  ]
}

获取到的token是临时有效的,需要及时使用。

获取token

下载图片

有了图片地址和token,就可以开始下载图片了。

下载方法

下载图片的请求方式为GET。在上一步获取token的基础上,构建如下的url:

例如获取到的token信息如下:

{
  "code": 0,
  "msg": "",
  "data": [
    {
      "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
      "token": "36931815abb35857627a22c347dc1c86&ts=634045c2"
    }
  ]
}

则访问以下网址即可下载图片,注意需要添加?token=参数:

https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg?token=36931815abb35857627a22c347dc1c86&ts=634045c2

:若不加取图Token直接访问图片地址,将无法获取图片。

下载流程示意图

mermaid

通过以上三个步骤,我们就可以完整地实现B站漫画的下载,轻松享受离线阅读的乐趣。如果你想了解更多B站API的使用方法,可以查阅项目的官方文档

漫画阅读

希望本文对你理解和使用B站漫画下载接口有所帮助,如有任何问题,欢迎在项目中提出issue进行交流。记得点赞、收藏、关注,获取更多B站API相关的实用教程!

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

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

抵扣说明:

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

余额充值