From bd4104413e461446e6250c982f2bdf960a383682 Mon Sep 17 00:00:00 2001 From: HankTheSniper <798481015@qq.com> Date: Wed, 23 Oct 2024 00:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=A8=A1=E6=8B=9Fap?= =?UTF-8?q?p=E7=AB=AF=E7=82=B9=E5=87=BB=E7=9F=AD=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E8=8E=B7=E5=BE=97=E7=9A=84=E8=A7=86=E9=A2=91=E5=88=97=E8=A1=A8?= =?UTF-8?q?=EF=BC=9B=E4=BF=AE=E6=94=B9=E4=BA=86=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/user/space.md | 4 +- docs/video/recommend.md | 197 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+), 2 deletions(-) diff --git a/docs/user/space.md b/docs/user/space.md index 3abf26c..1d4e115 100644 --- a/docs/user/space.md +++ b/docs/user/space.md @@ -2857,7 +2857,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只 `item`数组元素: -| 参数名 | 类型 | 内容 | 备注 | +| 字段 | 类型 | 内容 | 备注 | | ----------------- | ----- | ----------------------- | ------------------------ | | author | str | 作者昵称 | | | bvid | str | 视频bv号 | | @@ -2895,7 +2895,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只 `item`元素中的`cursor_attr`对象: -| 参数名 | 类型 | 内容 | 备注 | +| 字段 | 类型 | 内容 | 备注 | | ------------------- | ---- | ----------------------- | -------------------------------------- | | is_last_watched_arc | bool | 是否为上次播放 | 如果ture则封面笼罩一层写有“上次播放”的灰幕 | | rank | num | 视频所处该列表排名 | | diff --git a/docs/video/recommend.md b/docs/video/recommend.md index b203e50..dcc93c3 100644 --- a/docs/video/recommend.md +++ b/docs/video/recommend.md @@ -1141,6 +1141,203 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \ +## 根据点击视频获取的短视频播放列表 + +> https://app.bilibili.com/x/v2/feed/index/story + +*请求方式:GET* + +在APP端点击主页视频后发出的请求 +认证方式:Cookie 或 APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +|---------------|------|-------------------------|----------------|------------------------------------------| +| aid | num | 点击视频的aid | 非必要 | 所点击视频的aid,会影响到后续视频内容 | +| display_id | num | 视频列表页数 | 非必要 | 从1开始,第1页会得到比其他页多aid处所填视频 | +| access_key | str | APP登录Token | APP方式必要 | | +| session_id | str | +| ad_extra | str | 额外广告? | 非必要 | | +| appkey | str | APP密钥 | APP方式必要 | | +| auto_play | num | 自动播放 | 非必要 | 可为0 | +| build | num | 版本 | APP方式必要 | 可为`8130300` | +| bvid | str | 视频的bv号 +| c_locale | str | 语言 | 非必要 | zh_CN | +| channel | num | 频道 | 非必要 | | +| cid | num | 目标频道id | 非必要 | | +| contain | bool | 未知 | 非必要 | 可为false | +| creative_id | num | 未知 | 非必要 | 默认为 `0` | +| device_name | str | 设备名称 | 非必要 | 随意字符串都行 | +| disable_rcmd` | num | 未知 | 非必要 | 默认为 `1` | +| epid | num | 未知 | 非必要 | 默认为 `0` | +| feed_status | num | 未知 | 非必要 | 默认为 `0` | +| fnval | num | 视频流类型 | 非必要 | | +| fnver | num | 请求时提供的fnver | 非必要 | 可为 0 | +| force_host | num | 源url类型 | 非必要 | 0:无限制 1:使用http 2:使用https | +| fourk | num | 是否允许 4K 视频 | 非必要 | 画质最高 1080P:0(默认)
画质最高 4K:1 | +| from | num | 未知 | 非必要 | 可为 `7` | +| from_spmid | str | 未知 | 非必要 | tm.recommend.0.0 | +| goto | str | 未知 | 非必要 | | +| mobi_app | str | 平台标识 | 非必要 | 可为 `web`、`android` 等 | +| network | str | 网络 | 非必要 | 可为 `wifi` | +| ogv_style | num | 未知 | 非必要 | 默认为 `0` | +| platform | str | 平台 | 非必要 | 可为`web`或`android` | +| player_net | num | 未知 | 非必要 | 默认为 `1` | +| pull | num | 未知 | 非必要 | 默认为 `1` | +| pn | num | 似乎不是页码 | 非必要 | 默认为 `32` | +| request_from | num | 未知 | 非必要 | 默认为 `0` | +| s_locale | str | 语言 | 非必要 | zh_CN | +| spmid | str | 未知 | 非必要 | main.ugc-video-detail-vertical.0.0 | +| statistics | str | 位置 | 非必要 | 可为{"appId":1,"platform":3,"version":"8.13.0","abtest":""} | +| story_param | str | 未知 | 非必要 | | +| trackid | str | 路径id?未知 | 非必要 | | +| ts | num | 秒级时间戳 | 非必要 | | +| video_mode | num | 视频模式?未知 | 非必要 | 可为 `2`,应该是可以逆向出来的 | +| voice_balance | num | 未知 | 非必要 | 默认为 `1` | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为 0 | +| ttl | num | 1 | | +| data | obj | 视频信息 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | -------- | ---------------------------- | +| config | obj | 配置 | | +| items | array | 视频信息 | | + +`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---- | +| 0 | obj | 视频信息1 | | +| n | obj | 视频信息(n+1) | | +| …… | obj | …… | …… | + +`items`数组元素: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ----- | ----------------------- | ------------------------ | +| bvid | str | 视频bv号 | | +| card_goto | str | 卡片跳转 | | +| copyright | num | 版权 | | +| cover | str | 封面url | | +| desc | str | 视频描述 | | +| dimension | num | 包括视频尺寸、旋转角度 | | +| dislike_reasons_v2 | obj | 不喜欢原因v2的各种显示 | | +| dislike_reasons_v3 | obj | 不喜欢原因v3的各种显示 | | +| duration | num | 视频时长 | | +| ff_cover | str | 短视频封面原图 | | +| goto | str | 应该是跳转去向类型 | 此处为vertical_av | +| owner | obj | 拥有者,也就是up信息 | | +| param | str | 参数,实际为视频aid | | +| player_args | obj | 播放器参数 | | +| pubdate | num | 发布时间秒级时间戳 | | +| report_flow_data | str | 报告流数据 | 是个伪装成obj的str | +| req_user | ? | 未知 | 空的 | +| rights | obj | 未知 | | +| share_bottom_button | obj | 分享下方按钮 | | +| share_guide | obj | 未知 | | +| short_link | str | 视频短链接 | | +| show_report | obj | 显示举报 | | +| stat | obj | 视频信息 | | +| sub_title | str | 子标题 | 但显示的是描述播放量的文字 | +| submission_entrance | obj | 提交入口 | icon的uri | +| three_point_button | obj | 三点按钮要显示的内容 | 里面有两个array | +| thumb_up_animation | str | 未知 | | +| title | str | 视频标题 | | +| top_search_bar | obj | 搜索栏 | 内含一个跳转的uri | +| track_id | str | 路由track | | +| uri | str | uri | | +| view_content | str | 用于显示的文本形式播放量 | | +| vip | obj | vip相关的信息 | | + +`owner`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ----- | ----------------------- | ------------------------ | +| attention | num | 未知 | 包含一个mid的int字段 | +| avatar | obj | 一些显示设置 | | +| face | str | 头像url | | +| fans | num | 粉丝量 | | +| like_num | num | 获赞数 | | +| mid | num | up主的mid | | +| name | str | up主的昵称 | | +| official_verify | obj | 官方认证 | type=-1为无认证,没有其他字段;type=0为黄闪电同时role=1,type=1为蓝闪电同时role大于1,且type不为-1时有字段title为称号 | +| relation | num | 关系?未知 | | +| sub_avatar | obj | 子形象 | 包含一个mid的int字段 | +| upower | obj | 充电相关 | 包含一个button_uri字段类型为str,是充电跳转链接 | + +`player_args`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ----- | ----------------------- | ------------------------ | +| aid | num | 视频作者的aid | | +| cid | num | 所属频道的cid | | +| type | str | 内容类型 | 视频一般都是av | + +`player_args`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ----- | ------------------------ | ------------------------ | +| aid | num | 视频作者的aid | | +| coin | num | 视频硬币数 | | +| danmaku | num | 视频弹幕数 | | +| favorite | num | 视频收藏数 | | +| follow | num | 未知 | 很多都是0 | +| like | num | 视频点赞数 | | +| reply | num | 视频评论与回复总数 | | +| share | num | 视频分享数 | | +| view | num | 视频播放 | | + +**示例:** + +(1)模拟点击aid=113350747029965的视频并获取短视频推荐列表 +```python +import json +import requests + +mobile_headers = { + "User-Agent": "xxx", + "env": "prod", + "session_id": "xxx", # 在实际使用中,session_id需要及时更新,否则将导致响应列表有问题 + "APP-KEY": "android64", + 'Buvid': "xxx" +} + +story_url = "https://app.bilibili.com/x/v2/feed/index/story" + +story_params = { + "aid": 113350747029965, + "display_id": 1, + "appkey": "1d8b6e7d45233436", + "build": "8130300", + "bvid": "", + "mobi_app": "android", + "statistics": "{\"appId\":1,\"platform\":3,\"version\":\"8.13.0\",\"abtest\":\"\"}" +} + +response = requests.get(story_url, params=story_params, headers=mobile_headers) + +print(json.dumps(response.json(), indent=4)) +``` +返回值内容过长,暂不予展示 + +(2)随机的短视频推荐 + +> https://app.bilibili.com/x/v2/feed/index/story +浏览器直接输入 + +返回值内容过长,暂不予展示 + + ## 获取短视频模式视频列表