Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/simon300000/bili-api

Bilibili Node.js API
https://github.com/simon300000/bili-api

bilibili bilibili-api

Last synced: about 2 months ago
JSON representation

Bilibili Node.js API

Awesome Lists containing this project

README

        

# Bili-api ![Node CI](https://github.com/simon300000/bili-api/workflows/Node%20CI/badge.svg) [![Coveralls github](https://img.shields.io/coveralls/github/simon300000/bili-api.svg)](https://coveralls.io/github/simon300000/bili-api) [![npm](https://img.shields.io/npm/v/bili-api.svg)](https://www.npmjs.com/package/bili-api)

```javascript
let object = await biliAPI({ mid: 349991143 }, ['uname', 'guardNum'])
object.uname // → "神楽Mea_Official"
object.guardNum // → 90
```

# 目录

- [biliAPI](#biliapi)
* [安装](#%E5%AE%89%E8%A3%85)
* [用法](#%E7%94%A8%E6%B3%95)
+ [biliAPI Document](#biliapi-document)
+ [Router Graph](#router-graph)
- [Bilibili API Document](#bilibili-api-document)
* [DATAs](#datas)
+ [stat](#stat)
+ [info](#info)
+ [view](#view)
+ [list](#list)
+ [\_notice](#_notice)
+ [video](#video)
+ [guardNum](#guardnum)
+ [guards](#guards)
+ [guardLevel](#guardlevel)
+ [roundStatus](#roundstatus)
+ [liveStatus](#livestatus)
+ [title](#title)
+ [notice](#notice)
+ [archiveView](#archiveview)
+ [articleView](#articleview)
+ [face](#face)
+ [topPhoto](#topphoto)
+ [liveStartTime](#livestarttime)
+ [mid](#mid)
+ [aid](#aid)
+ [bvid](#bvid)
+ [roomid](#roomid)
+ [rankdb](#rankdb)
+ [dynamics](#dynamics)
+ [dynamicOffset](#dynamicoffset)
- [Contribution](#contribution)

# biliAPI

## 安装

npm

```sh
npm install bili-api -S
```

Yarn

```sh
yarn add bili-api
```

## 用法

```javascript
const biliAPI = require('bili-api')
;
(async () => {
let up = await biliAPI({ mid: 349991143 }, ['follower'])
up.follower // → 865364
})()
```

以上便是根据<[mid](#api_mid)>查找粉丝数,很简单对不对→\_→

想看看推的VTB有几个舰长,几个提督,有没有石油佬上总督?没问题!

```javascript
const biliAPI = require('bili-api');

(async () => {
let { guardLevel } = await biliAPI({ mid: 415578378 }, ['guardLevel'], { wait: 200 })
guardLevel // → [
// 0,
// 0,
// 0
//]
})()
```

部分API支持不同来源分支查询,比如通过用户名查找 mid,后查找其余信息。

```javascript
const biliAPI = require('bili-api');

(async () => {
let { guardNum } = await biliAPI({ uname: '帕里_Paryi' }, ['guardNum'])
guardNum // → 4
})()
```

通过视频 av 号查找UP主 mid,后查找UP主其余信息。

```javascript
const biliAPI = require('bili-api');

(async () => {
// 迷 迭 迷 迭 帕 里 桑
let { uname } = await biliAPI({ aid: 54299141 }, ['uname'])
uname // → "马牌酸菜罐头"
})()
```

### biliAPI Document

```javascript
/**
* @method biliAPI
* @param {Object} object 输入的信息
* @param {Array} targets 需要的目标信息
* @param {Function} [option] 设置
* @return {Promise} Resolve一个带有所需targets的Object
*/
biliAPI(object, targets[, option])
```

- `object`: Object,提供目前知道的信息,比如 `{ mid: 349991143 }`,不同key的说明可以参阅[IDs](#ids)

- `targets`: Array,需要的信息,比如 `['follower']`,每个值的说明可以参阅[APIs](#apis)

- `option`: Object,可选设置。

- `wait`: Number,默认0。

如果在短时间发起过多请求,可能会被bilibili暂时banIP,所以可以在这里指定一个请求delay,单位 ms 毫秒,每一个网络请求都会暂停一段时间。

比如上面的获取舰团数据例子就有 200 毫秒延迟,因为它需要遍历舰团的每一页,所以最好设置一个delay。

#### 更多例子:

##### 获取所有视频

```javascript
const biliAPI = require('bili-api');

(async () => {
let { allVideos } = await biliAPI({ mid: 380829248 }, ['allVideos'])
allVideos.length // → 803
allVideos[0] // → {
// "comment": 151,
// "typeid": 27,
// "play": 35467,
// "pic": "http://i1.hdslb.com/bfs/archive/7ebdf463d240d634c48ffd1fa07aa5b4300626a1.jpg",
// "subtitle": "",
// "description": "看一眼,这是什么,是花园橘猫,橘猫飞扑!再多看一眼,这是什么,是花园橘猫,橘猫飞扑!\n\n推特:https://twitter.com/hanazono_serena\n\n油管:https://www.youtube.com/channel/UCRXBTd80F5IIWWY4HatJ5Ug\n\ntwitcasting:http://www.twitcasting.tv/hanazono_serena/show",
// "copyright": "1",
// "title": "再多看一眼,是肥猫飞扑!!(ง˙o˙)ว",
// "review": 0,
// "author": "花园Serena",
// "mid": 380829248,
// "created": 1682341800,
// "length": "00:17",
// "video_review": 17,
// "aid": 697813388,
// "bvid": "BV1Dm4y127Rk",
// "hide_click": false,
// "is_pay": 0,
// "is_union_video": 0,
// "is_steins_gate": 0,
// "is_live_playback": 0,
// "meta": {
// "id": 1273994,
// "title": "猫猫小场景",
// "cover": "https://archive.biliimg.com/bfs/archive/d924dca6f0fe32acd664187541ad181a5f95402c.jpg",
// "mid": 380829248,
// "intro": "短视频合集",
// "sign_state": 0,
// "attribute": 140,
// "stat": {
// "season_id": 1273994,
// "view": 679218,
// "danmaku": 394,
// "reply": 2164,
// "favorite": 27482,
// "coin": 9946,
// "share": 3687,
// "like": 135269,
// "mtime": 1682420254,
// "vt": 1236324,
// "vv": 0
// },
// "ep_count": 15,
// "first_aid": 354674889,
// "ptime": 1682341800,
// "ep_num": 0
// },
// "is_avoided": 0,
// "attribute": 0
//}
})()
```

##### 获取视频分P的所有cid

```javascript
const biliAPI = require('bili-api');

(async () => {
let { cids } = await biliAPI({ aid: 27702699 }, ['cids'])
cids // → [
// 153368014,
// 154130876,
// 153022084,
// 152986511,
// 152985543,
// 152425880,
// 152002045,
// 150297919,
// 149694024,
// 148577829,
// 148579293,
// 148575538,
// 147100251,
// 146848245,
// 146854231,
// 146834824,
// 144775534,
// 144342789,
// 144606741,
// 144044432,
// 144039296,
// 144044987,
// 141818927,
// 141375841,
// 140200064,
// 140201152,
// 140201635,
// 138312230,
// 138314190,
// 138313436,
// 138095411,
// 138313721,
// 137399592,
// 138300762,
// 137513774,
// 137354408,
// 136834104,
// 136415428,
// 136413554,
// 136205486,
// 135178666,
// 135081523,
// 135082155,
// 134965028,
// 134890616,
// 134686293,
// 134482642,
// 134383394,
// 134383290,
// 134072123,
// 134686834,
// 133674390,
// 132804903,
// 132250522,
// 132252236,
// 132251210,
// 131783391,
// 138302683,
// 131095190,
// 130775348,
// 130679944,
// 130544896,
// 130064858,
// 130064687,
// 130065169,
// 129494135,
// 129471844,
// 128741177,
// 128328466,
// 127911562,
// 127882591,
// 126961245,
// 127411295,
// 126577294,
// 126412246,
// 126412697,
// 125886700,
// 125353459,
// 124221119,
// 124220678,
// 124220626,
// 123977663,
// 123669381,
// 124940385,
// 123102926,
// 123062231,
// 122770200,
// 122705097,
// 122541408,
// 121700107,
// 121698981,
// 121698543,
// 122249080,
// 121698118,
// 120802623,
// 120568983,
// 120419369,
// 119155112,
// 118858442,
// 118514627,
// 117565934,
// 117348519,
// 117346761,
// 117345948,
// 117343514,
// 117349741,
// 117349698,
// 116186644,
// 114763979,
// 114638549,
// 114418415,
// 114230987,
// 113685416,
// 113606632,
// 112946049,
// 112305652,
// 112299881,
// 112249982,
// 112249847,
// 112249715,
// 111800712,
// 111823761,
// 111806238,
// 111805606,
// 111804322,
// 110947294,
// 110946620,
// 113607080,
// 110945683,
// 108734088,
// 108728098,
// 108721702,
// 108721496,
// 107242490,
// 107147481,
// 113607702,
// 106752299,
// 106738746,
// 106011326,
// 105885163,
// 105883722,
// 105131095,
// 103894110,
// 103893362,
// 103025841,
// 103029620,
// 100426228,
// 100438286,
// 100073514,
// 100067702,
// 100064630,
// 98140930,
// 98176581,
// 97497904,
// 97074496,
// 98171575,
// 96396213,
// 96396029,
// 94227448,
// 94789318,
// 94254317,
// 93784890,
// 94257750,
// 94317035,
// 94319102,
// 94319353,
// 94319982,
// 94320142,
// 94320271,
// 94320723,
// 94320982,
// 94320998,
// 94321024,
// 97056382,
// 96535734,
// 96534727,
// 96534219,
// 96533304,
// 96541034,
// 103127764,
// 103128533,
// 103129216,
// 103129712,
// 103129922,
// 103130328,
// 103130885,
// 103130897,
// 1085091986,
// 103132696,
// 103132455,
// 103132879,
// 103111181,
// 103112536,
// 103113244,
// 103114950,
// 103117360,
// 103118025,
// 103118461,
// 103119415,
// 47780428
//]
})()
```

### Router Graph

![Graph of apis](api.svg)

# Bilibili API Document

这里收集的API应该属于"匿名API(自造词)",即不需要 登陆/appkey 的API。

用处大概是公开信息获取,暂时没有涉及类似"发弹幕/评论"相关API的打算。

以下是可能满足类似需求的资料:

[fython/BilibiliAPIDocs: Bilibili API (For thrid-party) Documents 哔哩哔哩开放接口第三方文档](https://github.com/fython/BilibiliAPIDocs)

[lovelyyoshino/Bilibili-Live-API: BILIBILI 直播/番剧 API](https://github.com/lovelyyoshino/Bilibili-Live-API)

[Vespa314/bilibili-api: B站API收集整理及开发,测试【开发中】](https://github.com/Vespa314/bilibili-api)

## DATAs

* ### stat

UP主统计数据

*前置:* <[mid](#api_mid)>

* ### info

UP主信息

*前置:* <[mid](#api_mid)>

* ### view

视频信息

*前置:* <[bvid](#api_bvid)>

* ### list

弹幕

*前置:* <[cid](#api_cid)>

* ### \_notice

UP主公告

*前置:* <[mid](#api_mid)>

* ### video

UP主的视频数

*前置:* <[spaceSearch](#api_spaceSearch)>

* ### guardNum

直播舰团

*前置:* <[topList](#api_topList)>

* ### guards

舰团列表

*前置:* <[fullTopList](#api_fullTopList)>

* ### guardLevel

舰团各等级数

*前置:* <[guards](#api_guards)>

* ### roundStatus

轮播状态,轮播中为`1`

*前置:* <[roomStatus](#api_roomStatus)>, <[liveRoom](#api_liveRoom)>

* ### liveStatus

直播状态,直播中为`1`,轮播/没播为`0`

*前置:* <[roomStatus](#api_roomStatus)>, <[liveRoom](#api_liveRoom)>

* ### title

直播间标题

*前置:* <[liveRoom](#api_liveRoom)>

* ### notice

公告

*前置:* <[_notice](#api__notice)>

* ### archiveView

UP主播放数

*前置:* <[upstat](#api_upstat)>

* ### articleView

UP主阅读数

*前置:* <[upstat](#api_upstat)>

* ### face

UP主头像的链接

*前置:* <[info](#api_info)>

* ### topPhoto

个人空间头图

*前置:* <[info](#api_info)>

* ### liveStartTime

直播开始时间

*前置:* <[getInfoByRoom](#api_getInfoByRoom)>

* ### mid

大概是 Member ID?
UP主个人空间地址 中的`43222001`就是这个`mid`了

* ### aid

就是av号啦→\_→
比如视频 中的`2134250`就是`aid`

*前置:* <[aid](#api_aid)>

* ### bvid

就是bv号,新出的www
比如视频 中的`BV1Xs411S77y`就是`bvid`

*前置:* <[archiveStat](#api_archiveStat)>

* ### roomid

直播房间号

*前置:* <[liveRoom](#api_liveRoom)>

* ### rankdb

bilibili直播一周元气榜分区排名

*前置:* <[mid](#api_mid)>

* ### dynamics

UP主的动态

*前置:* <[dynamicsRaw](#api_dynamicsRaw)>

* ### dynamicOffset

获取动态的起点。留空或设置为`0`可获取最新动态。使用上一次请求中的`next_offset`可获取下一页动态。

# Contribution

欢迎各种Issue和Pull Request

开Issue聊天也行→\_→!!!

详细可以阅读 [CONTRIBUTING.md](CONTRIBUTING.md)