【小教程】B站参数及API介绍

本文详细介绍了B站(哔哩哔哩)的参数,包括aid、media_id、season_id、ep和cid等,并阐述了它们在视频和番剧链接中的作用。随着B站转向使用BV号,但API仍基于AV号,文章提供了如何从MD号、SS号和EP号转换获取相关信息的方法。此外,还展示了如何利用API查询视频播放数据和弹幕信息。通过实例演示了获取Re0第二季第一集的播放数据,并指出该数据可用于进一步分析。
摘要由CSDN通过智能技术生成

【小教程】B站参数及API介绍

参数介绍

  1. aid:视频av号,如:https://www.bilibili.com/video/av93987817,其中av后面的数字即视频的av号。
  2. media_id:番剧md号,如:https://www.bilibili.com/bangumi/media/md28229233,其中md后面的数字即番剧的md号。
  3. season_id:番剧ss号,如:https://www.bilibili.com/bangumi/play/ss33802,其中ss后面的数字即番剧的ss号。
  4. ep:番剧视频id号,如:https://www.bilibili.com/bangumi/play/ep330798,其中ep后面的数字即番剧的单集编号。
  5. cid:番剧视频弹幕池id号。

虽然从2020.03开始,B站开始改用BV号,但是由于API目前还是基于AV号,所以本文不提及BV号。

查询参数

AV号

普通视频对应的网址之前包含AV号,现在改用BV号了,BV转AV工具可自行上网查询。

番剧视频对应的网址之前包含AV号,现在改用ep号了,目前通过截图等获取番剧视频AV号的方法已失效,需要通过下面介绍的API来查询。

md号

打开番剧的详情页,对应网址中包含md号:https://www.bilibili.com/bangumi/media/md28229233

ss号

打开番剧索引我的追番中的番剧,对应的网址中包含ss号:https://www.bilibili.com/bangumi/play/ss33802

ep号

打开番剧的某一集,对应网址中包含ep号:https://www.bilibili.com/bangumi/play/ep330798

cid号

需要通过下面介绍的API来查询。

API介绍

  1. 通过md号查询番剧的封面图、ss号、地区、标题等:https://api.bilibili.com/pgc/review/user?media_id=28229233
  2. 通过ss号查询番剧各集的aid号、cid号、标题、封面图等:https://api.bilibili.com/pgc/web/season/section?season_id=33802
  3. 通过aid号查询视频的播放量、弹幕数、回复数、投币数等:https://api.bilibili.com/archive_stat/stat?aid=626339509
  4. 通过cid号获取视频的弹幕xml文件:https://api.bilibili.com/x/v1/dm/list.so?oid=210288241https://api.bilibili.com/x/v2/dm/history?type=1&;oid=210288241&date=2020-07-08(可指定日期),其中oid=填写cid即可,指定日期时格式为yyyy-mm-dd。

实践应用1-获取Re0第二季第一集的播放数据

  1. 使用ss号查询番剧各集aid:https://api.bilibili.com/pgc/web/season/section?season_id=33802

    得到一下数据:

    {"code":0,"message":"success","result":{"main_section":{"episodes":[{"aid":626339509,"badge":"会员","badge_info":{"bg_color":"#FB7299","bg_color_night":"#BB5B76","text":"会员"},"badge_type":0,"cid":210288241,"cover":"http://i0.hdslb.com/bfs/archive/417d16c9ee4d496f69319987d0a26683e651c106.jpg","from":"bangumi","id":330798,"is_premiere":0,"long_title":"各自的誓言","share_url":"https://www.bilibili.com/bangumi/play/ep330798","status":13,"title":"1","vid":""}],"id":48379,"title":"正片","type":0},"section":[{"episodes":[{"aid":455889505,"badge":"","badge_info":{"bg_color":"#FB7299","bg_color_night":"#BB5B76","text":""},"badge_type":0,"cid":205208133,"cover":"http://i0.hdslb.com/bfs/archive/23578c063dc238524b428f28f9d20087fcbb0be5.jpg","from":"bangumi","id":329553,"is_premiere":0,"long_title":"","share_url":"https://www.bilibili.com/bangumi/play/ep329553","status":2,"title":"正式PV","vid":""},{"aid":413575139,"badge":"","badge_info":{"bg_color":"#FB7299","bg_color_night":"#BB5B76","text":""},"badge_type":0,"cid":203194650,"cover":"http://i0.hdslb.com/bfs/archive/e43fe78becc700ca40070dc8e4640d55eac73cb0.jpg","from":"bangumi","id":329552,"is_premiere":0,"long_title":"","share_url":"https://www.bilibili.com/bangumi/play/ep329552","status":2,"title":"制作决定PV","vid":""}],"id":48655,"title":"PV","type":1}]}}
    
  2. 从上面的数据中可以找到第一集的相关信息,包括"aid":626339509"cid":210288241

  3. 使用av号查询番剧的播放数据:https://api.bilibili.com/archive_stat/stat?aid=626339509

    得到以下数据:

    {"code":0,"message":"0","ttl":1,"data":{"aid":626339509,"view":1551819,"danmaku":162813,"reply":46837,"favorite":51,"coin":64805,"share":352,"now_rank":0,"his_rank":0,"like":8519,"dislike":0,"no_reprint":0,"copyright":2}}
    

    可以看到不到一天的时间,播放量为:"view":1551819、弹幕数为:"danmaku":162813、投币数为:"coin":64805

实践应用2-获取Re0第二季第一集弹幕并生成词云

由于本实践的内容需要Python知识较多,所以决定另外写教程。

.NET Web API 是一种用于构建 RESTful Web 服务的框架。在 Web API 中,我们可以使用标准的 HTTP 方法(GET、POST、PUT、DELETE 等)来操作资源,通过 URL 参数和请求体传递数据。接下来,我将向您介绍如何在 .NET Web API 中接收参数。 首先,我们需要创建一个 Web API 控制器。在控制器中,我们可以定义多个 Action 方法,每个方法对应一个 HTTP 请求。 例如,我们创建一个名为 "ValuesController" 的控制器,并定义一个名为 "Get" 的 Action 方法,用于处理 HTTP GET 请求: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } } ``` 在上面的代码中,我们返回了一个包含两个字符串的数组作为响应结果。 现在,我们来看一下如何接收参数。假设我们想要实现一个查询指定 ID 的资源的功能,我们可以在控制器中添加一个名为 "GetById" 的 Action 方法,并使用 id 参数来指定资源的 ID: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } } ``` 在上面的代码中,我们使用 "int id" 参数来接收请求 URL 中的 ID 参数,并返回一个包含 "value" 和 ID 的字符串作为响应结果。 如果我们想要接收多个参数,可以在方法中添加多个参数: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id, string name) { return "Hello, " + name + "! Your ID is " + id; } } ``` 在上面的代码中,我们添加了一个名为 "name" 的字符串类型参数,用于接收请求 URL 中的 name 参数。 除了从 URL 中接收参数外,我们还可以从请求体中接收参数。在 HTTP POST 请求中,我们可以通过请求体来传递数据。在 Web API 中,我们可以使用 [FromBody] 属性来指定请求体中的参数。 例如,我们可以定义一个名为 "Create" 的 Action 方法,用于处理 HTTP POST 请求: ```csharp public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } // POST api/values public void Create([FromBody] string value) { // Do something with the value } } ``` 在上面的代码中,我们添加了一个名为 "value" 的字符串类型参数,并使用 [FromBody] 属性来指定它是从请求体中接收的参数。 最后,我们需要注意的是,如果我们需要接收复杂的对象类型参数,可以使用 [FromBody] 属性来指定对象的类型,并在方法中使用该类型的实例来接收参数。例如: ```csharp public class User { public int Id { get; set; } public string Name { get; set; } } public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string GetById(int id) { return "value" + id; } // POST api/values public void Create([FromBody] User user) { // Do something with the user object } } ``` 在上面的代码中,我们定义了一个名为 "User" 的类,并在 "Create" 方法中使用它来接收从请求体中传递的参数。通过这种方式,我们可以轻松地实现 Web API 中的参数接收功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值