返回提交历史
Modified
docs/user/space.md
+2
-2
Modified
docs/video/recommend.md
+197
-0
XFEstudio/bilibili-API-collect
增加了模拟app端点击短视频获得的视频列表;修改了错误的表头
bd41044
代码差异
2 个文件
+199
-2
@@ -2857,7 +2857,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只
2857
2857
2858
2858
`item`数组元素:
2859
2859
2860
| 参数名 | 类型 | 内容 | 备注 |
2860
| 字段 | 类型 | 内容 | 备注 |
2861
2861
| ----------------- | ----- | ----------------------- | ------------------------ |
2862
2862
| author | str | 作者昵称 | |
2863
2863
| bvid | str | 视频bv号 | |
@@ -2895,7 +2895,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只
2895
2895
2896
2896
`item`元素中的`cursor_attr`对象:
2897
2897
2898
| 参数名 | 类型 | 内容 | 备注 |
2898
| 字段 | 类型 | 内容 | 备注 |
2899
2899
| ------------------- | ---- | ----------------------- | -------------------------------------- |
2900
2900
| is_last_watched_arc | bool | 是否为上次播放 | 如果ture则封面笼罩一层写有“上次播放”的灰幕 |
2901
2901
| rank | num | 视频所处该列表排名 | |
@@ -1141,6 +1141,203 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
1141
1141
1142
1142
</details>
1143
1143
1144
## 根据点击视频获取的短视频播放列表
1145
1146
> https://app.bilibili.com/x/v2/feed/index/story
1147
1148
*请求方式:GET*
1149
1150
在APP端点击主页视频后发出的请求
1151
认证方式:Cookie 或 APP
1152
1153
**url参数:**
1154
1155
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
1156
|---------------|------|-------------------------|----------------|------------------------------------------|
1157
| aid | num | 点击视频的aid | 非必要 | 所点击视频的aid,会影响到后续视频内容 |
1158
| display_id | num | 视频列表页数 | 非必要 | 从1开始,第1页会得到比其他页多aid处所填视频 |
1159
| access_key | str | APP登录Token | APP方式必要 | |
1160
| session_id | str |
1161
| ad_extra | str | 额外广告? | 非必要 | |
1162
| appkey | str | APP密钥 | APP方式必要 | |
1163
| auto_play | num | 自动播放 | 非必要 | 可为0 |
1164
| build | num | 版本 | APP方式必要 | 可为`8130300` |
1165
| bvid | str | 视频的bv号
1166
| c_locale | str | 语言 | 非必要 | zh_CN |
1167
| channel | num | 频道 | 非必要 | |
1168
| cid | num | 目标频道id | 非必要 | |
1169
| contain | bool | 未知 | 非必要 | 可为false |
1170
| creative_id | num | 未知 | 非必要 | 默认为 `0` |
1171
| device_name | str | 设备名称 | 非必要 | 随意字符串都行 |
1172
| disable_rcmd` | num | 未知 | 非必要 | 默认为 `1` |
1173
| epid | num | 未知 | 非必要 | 默认为 `0` |
1174
| feed_status | num | 未知 | 非必要 | 默认为 `0` |
1175
| fnval | num | 视频流类型 | 非必要 | |
1176
| fnver | num | 请求时提供的fnver | 非必要 | 可为 0 |
1177
| force_host | num | 源url类型 | 非必要 | 0:无限制 1:使用http 2:使用https |
1178
| fourk | num | 是否允许 4K 视频 | 非必要 | 画质最高 1080P:0(默认)<br />画质最高 4K:1 |
1179
| from | num | 未知 | 非必要 | 可为 `7` |
1180
| from_spmid | str | 未知 | 非必要 | tm.recommend.0.0 |
1181
| goto | str | 未知 | 非必要 | |
1182
| mobi_app | str | 平台标识 | 非必要 | 可为 `web`、`android` 等 |
1183
| network | str | 网络 | 非必要 | 可为 `wifi` |
1184
| ogv_style | num | 未知 | 非必要 | 默认为 `0` |
1185
| platform | str | 平台 | 非必要 | 可为`web`或`android` |
1186
| player_net | num | 未知 | 非必要 | 默认为 `1` |
1187
| pull | num | 未知 | 非必要 | 默认为 `1` |
1188
| pn | num | 似乎不是页码 | 非必要 | 默认为 `32` |
1189
| request_from | num | 未知 | 非必要 | 默认为 `0` |
1190
| s_locale | str | 语言 | 非必要 | zh_CN |
1191
| spmid | str | 未知 | 非必要 | main.ugc-video-detail-vertical.0.0 |
1192
| statistics | str | 位置 | 非必要 | 可为{"appId":1,"platform":3,"version":"8.13.0","abtest":""} |
1193
| story_param | str | 未知 | 非必要 | |
1194
| trackid | str | 路径id?未知 | 非必要 | |
1195
| ts | num | 秒级时间戳 | 非必要 | |
1196
| video_mode | num | 视频模式?未知 | 非必要 | 可为 `2`,应该是可以逆向出来的 |
1197
| voice_balance | num | 未知 | 非必要 | 默认为 `1` |
1198
| sign | str | APP签名 | APP方式必要 | |
1199
1200
**json回复:**
1201
1202
| 字段 | 类型 | 内容 | 备注 |
1203
| ------- | ---- | -------- | ---------------------------- |
1204
| code | num | 返回值 | 0:成功<br />-400:请求错误 |
1205
| message | str | 错误信息 | 默认为 0 |
1206
| ttl | num | 1 | |
1207
| data | obj | 视频信息 | |
1208
1209
`data`对象:
1210
1211
| 字段 | 类型 | 内容 | 备注 |
1212
| ------- | ----- | -------- | ---------------------------- |
1213
| config | obj | 配置 | |
1214
| items | array | 视频信息 | |
1215
1216
`items`数组:
1217
1218
| 项 | 类型 | 内容 | 备注 |
1219
| ---- | ---- | ------------ | ---- |
1220
| 0 | obj | 视频信息1 | |
1221
| n | obj | 视频信息(n+1) | |
1222
| …… | obj | …… | …… |
1223
1224
`items`数组元素:
1225
1226
| 字段 | 类型 | 内容 | 备注 |
1227
| ------------------- | ----- | ----------------------- | ------------------------ |
1228
| bvid | str | 视频bv号 | |
1229
| card_goto | str | 卡片跳转 | |
1230
| copyright | num | 版权 | |
1231
| cover | str | 封面url | |
1232
| desc | str | 视频描述 | |
1233
| dimension | num | 包括视频尺寸、旋转角度 | |
1234
| dislike_reasons_v2 | obj | 不喜欢原因v2的各种显示 | |
1235
| dislike_reasons_v3 | obj | 不喜欢原因v3的各种显示 | |
1236
| duration | num | 视频时长 | |
1237
| ff_cover | str | 短视频封面原图 | |
1238
| goto | str | 应该是跳转去向类型 | 此处为vertical_av |
1239
| owner | obj | 拥有者,也就是up信息 | |
1240
| param | str | 参数,实际为视频aid | |
1241
| player_args | obj | 播放器参数 | |
1242
| pubdate | num | 发布时间秒级时间戳 | |
1243
| report_flow_data | str | 报告流数据 | 是个伪装成obj的str |
1244
| req_user | ? | 未知 | 空的 |
1245
| rights | obj | 未知 | |
1246
| share_bottom_button | obj | 分享下方按钮 | |
1247
| share_guide | obj | 未知 | |
1248
| short_link | str | 视频短链接 | |
1249
| show_report | obj | 显示举报 | |
1250
| stat | obj | 视频信息 | |
1251
| sub_title | str | 子标题 | 但显示的是描述播放量的文字 |
1252
| submission_entrance | obj | 提交入口 | icon的uri |
1253
| three_point_button | obj | 三点按钮要显示的内容 | 里面有两个array |
1254
| thumb_up_animation | str | 未知 | |
1255
| title | str | 视频标题 | |
1256
| top_search_bar | obj | 搜索栏 | 内含一个跳转的uri |
1257
| track_id | str | 路由track | |
1258
| uri | str | uri | |
1259
| view_content | str | 用于显示的文本形式播放量 | |
1260
| vip | obj | vip相关的信息 | |
1261
1262
`owner`对象:
1263
1264
| 字段 | 类型 | 内容 | 备注 |
1265
| ------------------- | ----- | ----------------------- | ------------------------ |
1266
| attention | num | 未知 | 包含一个mid的int字段 |
1267
| avatar | obj | 一些显示设置 | |
1268
| face | str | 头像url | |
1269
| fans | num | 粉丝量 | |
1270
| like_num | num | 获赞数 | |
1271
| mid | num | up主的mid | |
1272
| name | str | up主的昵称 | |
1273
| official_verify | obj | 官方认证 | type=-1为无认证,没有其他字段;type=0为黄闪电同时role=1,type=1为蓝闪电同时role大于1,且type不为-1时有字段title为称号 |
1274
| relation | num | 关系?未知 | |
1275
| sub_avatar | obj | 子形象 | 包含一个mid的int字段 |
1276
| upower | obj | 充电相关 | 包含一个button_uri字段类型为str,是充电跳转链接 |
1277
1278
`player_args`对象:
1279
1280
| 字段 | 类型 | 内容 | 备注 |
1281
| ------------------- | ----- | ----------------------- | ------------------------ |
1282
| aid | num | 视频作者的aid | |
1283
| cid | num | 所属频道的cid | |
1284
| type | str | 内容类型 | 视频一般都是av |
1285
1286
`player_args`对象:
1287
1288
| 字段 | 类型 | 内容 | 备注 |
1289
| ------------------- | ----- | ------------------------ | ------------------------ |
1290
| aid | num | 视频作者的aid | |
1291
| coin | num | 视频硬币数 | |
1292
| danmaku | num | 视频弹幕数 | |
1293
| favorite | num | 视频收藏数 | |
1294
| follow | num | 未知 | 很多都是0 |
1295
| like | num | 视频点赞数 | |
1296
| reply | num | 视频评论与回复总数 | |
1297
| share | num | 视频分享数 | |
1298
| view | num | 视频播放 | |
1299
1300
**示例:**
1301
1302
(1)模拟点击aid=113350747029965的视频并获取短视频推荐列表
1303
```python
1304
import json
1305
import requests
1306
1307
mobile_headers = {
1308
"User-Agent": "xxx",
1309
"env": "prod",
1310
"session_id": "xxx", # 在实际使用中,session_id需要及时更新,否则将导致响应列表有问题
1311
"APP-KEY": "android64",
1312
'Buvid': "xxx"
1313
}
1314
1315
story_url = "https://app.bilibili.com/x/v2/feed/index/story"
1316
1317
story_params = {
1318
"aid": 113350747029965,
1319
"display_id": 1,
1320
"appkey": "1d8b6e7d45233436",
1321
"build": "8130300",
1322
"bvid": "",
1323
"mobi_app": "android",
1324
"statistics": "{\"appId\":1,\"platform\":3,\"version\":\"8.13.0\",\"abtest\":\"\"}"
1325
}
1326
1327
response = requests.get(story_url, params=story_params, headers=mobile_headers)
1328
1329
print(json.dumps(response.json(), indent=4))
1330
```
1331
返回值内容过长,暂不予展示
1332
1333
(2)随机的短视频推荐
1334
1335
> https://app.bilibili.com/x/v2/feed/index/story
1336
浏览器直接输入
1337
1338
返回值内容过长,暂不予展示
1339
1340
1144
1341
1145
1342
## 获取短视频模式视频列表
1146
1343