XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/bilibili-API-collect

增加了模拟app端点击短视频获得的视频列表;修改了错误的表头

bd41044
HankTheSniper <798481015@qq.com>
提交于

代码差异

2 个文件 +199 -2
Modified docs/user/space.md +2 -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 | 视频所处该列表排名 | |
Modified docs/video/recommend.md +197 -0
@@ -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