1611 lines
31 KiB
Protocol Buffer
1611 lines
31 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package bilibili.app.dynamic.v1;
|
|
|
|
import "bilibili/app/archive/middleware/v1.proto";
|
|
|
|
// 动态
|
|
service Dynamic {
|
|
// 通过动态 ID 批量获取动态详情请求
|
|
rpc DynDetails (DynDetailsReq) returns (DynDetailsReply);
|
|
//
|
|
rpc DynMixUpListSearch (DynMixUpListSearchReq) returns (DynMixUpListSearchReply);
|
|
//
|
|
rpc DynMixUpListViewMore (NoReq) returns (DynMixUpListViewMoreReply);
|
|
// 动态同城页请求
|
|
rpc DynOurCity (DynOurCityReq) returns (DynOurCityReply);
|
|
// 动态同城开关请求
|
|
rpc DynOurCitySwitch (DynOurCitySwitchReq) returns (NoReply);
|
|
// 动态红点请求
|
|
rpc DynRed (DynRedReq) returns (DynRedReply);
|
|
// 动态 tab 请求
|
|
rpc DynTab (DynTabReq) returns (DynTabReply);
|
|
// 最近访问标记已读请求
|
|
rpc DynUpdOffset (DynUpdOffsetReq) returns (NoReply);
|
|
// 动态视频页请求
|
|
rpc DynVideo (DynVideoReq) returns (DynVideoReqReply);
|
|
// 最近访问个人视频 feed 流请求
|
|
rpc DynVideoPersonal (DynVideoPersonalReq) returns (DynVideoPersonalReply);
|
|
//
|
|
rpc GeoCoder (GeoCoderReq) returns (GeoCoderReply);
|
|
//
|
|
rpc OurCityClickReport (OurCityClickReportReq) returns (OurCityClickReportReply);
|
|
// 小视频连播
|
|
rpc SVideo (SVideoReq) returns (SVideoReply);
|
|
}
|
|
|
|
//
|
|
message AdInfo {
|
|
//
|
|
string nation_code = 1;
|
|
//
|
|
string adcode = 2;
|
|
//
|
|
string city_code = 3;
|
|
//
|
|
string name = 4;
|
|
//
|
|
Gps gps = 5;
|
|
}
|
|
|
|
//
|
|
message AddressComponent {
|
|
//
|
|
string nation = 1;
|
|
//
|
|
string province = 2;
|
|
//
|
|
string city = 3;
|
|
//
|
|
string district = 4;
|
|
//
|
|
string street = 5;
|
|
//
|
|
string street_number = 6;
|
|
}
|
|
|
|
//
|
|
enum BgType {
|
|
//
|
|
bg_type_default = 0;
|
|
//
|
|
bg_type_face = 1;
|
|
}
|
|
|
|
//
|
|
message BubbleInfo {
|
|
//
|
|
repeated BubbleModule modules = 1;
|
|
//
|
|
string track_id = 2;
|
|
//
|
|
string bubble_recall_extra_when_show = 3;
|
|
}
|
|
|
|
//
|
|
message BubbleModule {
|
|
//
|
|
oneof module {
|
|
//
|
|
BubbleModuleUser user = 2;
|
|
//
|
|
BubbleModuleText text = 3;
|
|
//
|
|
BubbleModuleColoredTip colored_tip = 4;
|
|
//
|
|
BubbleModulePic pic = 5;
|
|
}
|
|
//
|
|
BubbleModuleType module_type = 1;
|
|
}
|
|
|
|
//
|
|
message BubbleModuleColoredTip {
|
|
//
|
|
string prefix_icon = 1;
|
|
//
|
|
bool is_svga_prefix_icon = 2;
|
|
//
|
|
string text = 3;
|
|
//
|
|
Color text_color = 4;
|
|
}
|
|
|
|
//
|
|
message BubbleModulePic {
|
|
//
|
|
string pic_day = 1;
|
|
//
|
|
string pic_night = 2;
|
|
//
|
|
int64 pic_width = 3;
|
|
//
|
|
int64 pic_height = 4;
|
|
//
|
|
bool rounded_corner = 5;
|
|
//
|
|
int64 rounded_corner_radius = 6;
|
|
}
|
|
|
|
//
|
|
message BubbleModuleText {
|
|
//
|
|
string content = 1;
|
|
}
|
|
|
|
//
|
|
enum BubbleModuleType {
|
|
//
|
|
BUBBLE_MODULE_NONE = 0;
|
|
//
|
|
BUBBLE_MODULE_USER = 1;
|
|
//
|
|
BUBBLE_MODULE_TEXT = 2;
|
|
//
|
|
BUBBLE_MODULE_COLORED_TIP = 3;
|
|
//
|
|
BUBBLE_MODULE_PIC = 4;
|
|
}
|
|
|
|
//
|
|
message BubbleModuleUser {
|
|
//
|
|
repeated UserInfo users = 1;
|
|
}
|
|
|
|
// 付费课程批次卡片数据
|
|
message CardCurrBatch {
|
|
// 标题
|
|
string title = 1;
|
|
// 封面
|
|
string cover = 2;
|
|
// 跳转地址
|
|
string uri = 3;
|
|
// 展示项 1: 本集标题
|
|
string text1 = 4;
|
|
// 展示项 2: 更新了多少个视频
|
|
string text2 = 5;
|
|
// 角标
|
|
VideoBadge badge = 6;
|
|
}
|
|
|
|
// 付费课程系列卡片数据
|
|
message CardCurrSeason {
|
|
// 标题
|
|
string title = 1;
|
|
// 封面
|
|
string cover = 2;
|
|
// 跳转地址
|
|
string uri = 3;
|
|
// 展示项 1 (展示更新信息)
|
|
string text1 = 4;
|
|
// 描述信息
|
|
string desc = 5;
|
|
// 角标
|
|
VideoBadge badge = 6;
|
|
}
|
|
|
|
// PGC 视频卡片数据
|
|
message CardPGC {
|
|
// 标题
|
|
string title = 1;
|
|
// 封面
|
|
string cover = 2;
|
|
// 秒开地址
|
|
string uri = 3;
|
|
// 视频封面展示项 1
|
|
string cover_left_text1 = 4;
|
|
// 视频封面展示项 2
|
|
string cover_left_text2 = 5;
|
|
// 视频封面展示项 3
|
|
string cover_left_text3 = 6;
|
|
// 视频 cid
|
|
int64 cid = 7;
|
|
// PGC 剧集 ID
|
|
int64 season_id = 8;
|
|
// PGC 剧集分集 ID
|
|
int64 epid = 9;
|
|
// 视频 avid
|
|
int64 aid = 10;
|
|
// 视频源类型
|
|
MediaType media_type = 11;
|
|
// 番剧类型
|
|
VideoSubType sub_type = 12;
|
|
// 番剧是否为预览视频
|
|
int32 is_preview = 13;
|
|
// 分辨率
|
|
Dimension dimension = 14;
|
|
// 角标
|
|
repeated VideoBadge badge = 15;
|
|
// 是否能够自动播放
|
|
int32 can_play = 16;
|
|
// PGC 剧集信息
|
|
PGCSeason season = 17;
|
|
}
|
|
|
|
// UGC 视频卡片数据
|
|
message CardUGC {
|
|
// 标题
|
|
string title = 1;
|
|
// 封面图
|
|
string cover = 2;
|
|
// 秒开地址
|
|
string uri = 3;
|
|
// 视频封面展示项 1
|
|
string cover_left_text1 = 4;
|
|
// 视频封面展示项 2
|
|
string cover_left_text2 = 5;
|
|
// 视频封面展示项 3
|
|
string cover_left_text3 = 6;
|
|
// 视频 avid
|
|
int64 avid = 7;
|
|
// 视频 cid
|
|
int64 cid = 8;
|
|
// 视频源类型
|
|
MediaType media_type = 9;
|
|
// 分辨率
|
|
Dimension dimension = 10;
|
|
// 角标
|
|
repeated VideoBadge badge = 11;
|
|
// 是否能够自动播放
|
|
int32 can_play = 12;
|
|
}
|
|
|
|
//
|
|
message Color {
|
|
//
|
|
string color_day = 1;
|
|
//
|
|
string color_night = 2;
|
|
}
|
|
|
|
//
|
|
message CornerInfo {
|
|
//
|
|
CornerType corner_type = 1;
|
|
//
|
|
string corner_text = 2;
|
|
//
|
|
Color corner_text_color = 3;
|
|
//
|
|
Color corner_text_bg_color = 4;
|
|
//
|
|
string corner_icon = 5;
|
|
//
|
|
int64 corner_number = 6;
|
|
}
|
|
|
|
//
|
|
enum CornerType {
|
|
//
|
|
corner_type_none = 0;
|
|
//
|
|
corner_type_text = 1;
|
|
//
|
|
corner_type_animation = 2;
|
|
//
|
|
corner_type_static = 3;
|
|
//
|
|
corner_type_red_dot = 4;
|
|
//
|
|
corner_type_number = 5;
|
|
}
|
|
|
|
// 粉丝样式
|
|
message DecoCardFan {
|
|
// 是否是粉丝
|
|
int32 is_fan = 1;
|
|
// 数量
|
|
int32 number = 2;
|
|
// 颜色
|
|
string color = 3;
|
|
}
|
|
|
|
// 装扮卡片
|
|
message DecorateCard {
|
|
// 装扮卡片 ID
|
|
int64 id = 1;
|
|
// 装扮卡片链接
|
|
string card_url = 2;
|
|
// 装扮卡片点击跳转链接
|
|
string jump_url = 3;
|
|
// 粉丝样式
|
|
DecoCardFan fan = 4;
|
|
}
|
|
|
|
// 文本描述
|
|
message Description {
|
|
// 文本内容
|
|
string text = 1;
|
|
// 文本类型
|
|
string type = 2;
|
|
// 跳转地址
|
|
string uri = 3;
|
|
// emoji 类型
|
|
string emoji_type = 4;
|
|
// 商品类型
|
|
string goods_type = 5;
|
|
}
|
|
|
|
// 分辨率信息
|
|
message Dimension {
|
|
// 高
|
|
int64 height = 1;
|
|
// 宽
|
|
int64 width = 2;
|
|
// 是否为竖屏
|
|
int64 rotate = 3;
|
|
}
|
|
|
|
// 通过动态 ID 批量获取动态详情返回值
|
|
message DynDetailsReply {
|
|
// 动态列表
|
|
repeated DynamicItem list = 1;
|
|
}
|
|
|
|
// 通过动态 ID 批量获取动态详情请求参数
|
|
message DynDetailsReq {
|
|
// 青少年模式
|
|
int32 teenagers_mode = 1;
|
|
// 动态 ID
|
|
string dynamic_ids = 2;
|
|
// 清晰度 (供秒开)
|
|
int32 qn = 3;
|
|
// 功能版本号 (供秒开)
|
|
int32 fnver = 4;
|
|
// 功能标识 (供秒开)
|
|
int32 fnval = 5;
|
|
// 返回 playurl 是否强制使用域名 (供秒开)
|
|
int32 force_host = 6;
|
|
// 是否需要 4K 视频 (供秒开)
|
|
int32 fourk = 7;
|
|
}
|
|
|
|
//
|
|
message DynMixUpListSearchReply {
|
|
//
|
|
repeated MixUpListItem items = 1;
|
|
}
|
|
|
|
//
|
|
message DynMixUpListSearchReq {
|
|
//
|
|
string name = 1;
|
|
}
|
|
|
|
//
|
|
message DynMixUpListViewMoreReply {
|
|
//
|
|
repeated MixUpListItem items = 1;
|
|
//
|
|
string search_default_text = 2;
|
|
}
|
|
|
|
// 动态同城物料
|
|
message DynOurCityItem {
|
|
// 卡片类型
|
|
//
|
|
// - av: 稿件
|
|
// - draw: 图文
|
|
string card_type = 1;
|
|
// 动态 ID
|
|
int64 dyn_id = 2;
|
|
// 跳转地址
|
|
string uri = 3;
|
|
// 模块列表
|
|
repeated DynOurCityModule modules = 4;
|
|
// 资源 ID
|
|
int64 rid = 5;
|
|
// ? DEBUG 信息
|
|
string debug_info = 6;
|
|
}
|
|
|
|
// 动态同城物料模块
|
|
message DynOurCityModule {
|
|
// 模块类型
|
|
//
|
|
// - `cover`: 封面
|
|
// - `desc`: 描述
|
|
// - `author`: 发布人
|
|
// - `extend`: 扩展部分
|
|
oneof module_item {
|
|
// 参见 [`DynOurCityModuleCover`]
|
|
DynOurCityModuleCover module_cover = 2;
|
|
// 参见 [`DynOurCityModuleDesc`]
|
|
DynOurCityModuleDesc module_desc = 3;
|
|
// 参见 [`DynOurCityModuleAuthor`]
|
|
DynOurCityModuleAuthor module_author = 4;
|
|
// 参见 [`DynOurCityModuleExtend`]
|
|
DynOurCityModuleExtend module_extend = 5;
|
|
}
|
|
// 模块类型
|
|
//
|
|
// - `cover`: 封面
|
|
// - `desc`: 描述
|
|
// - `author`: 发布人
|
|
// - `extend`: 扩展部分
|
|
string module_type = 1;
|
|
}
|
|
|
|
// 动态同城物料发布人模块
|
|
message DynOurCityModuleAuthor {
|
|
// 发布人 mid
|
|
int64 mid = 1;
|
|
// 发布人昵称
|
|
string name = 2;
|
|
// 发布人头像
|
|
string face = 3;
|
|
// 跳转地址
|
|
string uri = 4;
|
|
}
|
|
|
|
// 动态同城物料封面模块
|
|
message DynOurCityModuleCover {
|
|
// 封面图
|
|
//
|
|
// 单图样式取第一个元素
|
|
repeated string covers = 1;
|
|
// 封面样式
|
|
//
|
|
// - 1: 横图
|
|
// - 2: 竖图
|
|
// - 3: 方图
|
|
int32 style = 2;
|
|
// 视频封面展示项图标 1
|
|
int32 cover_left_icon1 = 3;
|
|
// 视频封面展示项 1
|
|
string cover_left_text1 = 4;
|
|
// 视频封面展示项图标 2
|
|
int32 cover_left_icon2 = 5;
|
|
// 视频封面展示项 2
|
|
string cover_left_text2 = 6;
|
|
// 视频封面展示项 3
|
|
string cover_left_text3 = 7;
|
|
// 角标
|
|
repeated VideoBadge badge = 8;
|
|
}
|
|
|
|
// 动态同城物料详情模块
|
|
message DynOurCityModuleDesc {
|
|
// 详情
|
|
string desc = 1;
|
|
}
|
|
|
|
// 动态同城物料拓展模块
|
|
message DynOurCityModuleExtend {
|
|
//
|
|
oneof extend {
|
|
//
|
|
DynOurCityModuleExtendLBS extend_lbs = 2;
|
|
}
|
|
//
|
|
string type = 1;
|
|
}
|
|
|
|
// 动态同城物料拓展模块: LBS
|
|
message DynOurCityModuleExtendLBS {
|
|
// 标题
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 小图标
|
|
string icon = 3;
|
|
//
|
|
int32 poi_type = 4;
|
|
}
|
|
|
|
// 动态同城页请求返回值
|
|
message DynOurCityReply {
|
|
// 翻页游标
|
|
string offset = 1;
|
|
// 是否还有更多
|
|
int32 has_more = 2;
|
|
// 样式类型
|
|
//
|
|
// - 1: 双列
|
|
// - 2: 瀑布流
|
|
int32 style = 3;
|
|
// ? 顶部导引信息
|
|
string top_label = 4;
|
|
// 列表详情
|
|
repeated DynOurCityItem list = 5;
|
|
// ? 顶部导引按钮信息
|
|
string top_button_label = 6;
|
|
// 城市 ID
|
|
int32 city_id = 7;
|
|
// 城市名称
|
|
string city_name = 8;
|
|
}
|
|
|
|
// 动态同城页请求参数
|
|
message DynOurCityReq {
|
|
// 城市 ID
|
|
int64 city_id = 1;
|
|
// 纬度
|
|
double lat = 2;
|
|
// 精度
|
|
double lng = 3;
|
|
// 透传上一次接口请求返回的 offset
|
|
string offset = 4;
|
|
// 每页元素个数
|
|
int32 page_size = 5;
|
|
// 青少年模式
|
|
int32 teenagers_mode = 6;
|
|
// 清晰度 (供秒开)
|
|
int32 qn = 7;
|
|
// 功能版本号 (供秒开)
|
|
int32 fnver = 8;
|
|
// 功能标识 (供秒开)
|
|
int32 fnval = 9;
|
|
// 返回 playurl 是否强制使用域名 (供秒开)
|
|
int32 force_host = 10;
|
|
// 是否需要 4K 视频 (供秒开)
|
|
int32 fourk = 11;
|
|
// 是否开启 LBS
|
|
int32 lbs_state = 12;
|
|
//
|
|
int32 refresh_city = 13;
|
|
// ab 测试配置
|
|
ExpConf exp_conf = 14;
|
|
// 播放器参数 (供秒开)
|
|
bilibili.app.archive.middleware.v1.PlayerArgs player_args = 15;
|
|
//
|
|
int64 city_code = 16;
|
|
//
|
|
int64 build_time = 17;
|
|
}
|
|
|
|
// 动态同城开关请求参数
|
|
message DynOurCitySwitchReq {
|
|
//
|
|
int32 switch = 1;
|
|
}
|
|
|
|
// 红点具体信息
|
|
message DynRedItem {
|
|
// 数字红点有效更新数
|
|
int64 count = 1;
|
|
}
|
|
|
|
// 动态红点返回值
|
|
message DynRedReply {
|
|
// 动态红点类型
|
|
//
|
|
// - count: 数字红点
|
|
// - point: 普通红点
|
|
// - no_point: 没有红点
|
|
string red_type = 1;
|
|
// 动态红点具体信息, 参见 [`DynRedItem`]
|
|
DynRedItem dyn_red_item = 2;
|
|
// 动态红点默认 tab 值, 对应 tab 接口下发的 anchor
|
|
string default_tab = 3;
|
|
// 动态红点样式
|
|
DynRedStyle red_style = 4;
|
|
//
|
|
string tab_recall_extra = 5;
|
|
//
|
|
BubbleInfo bubble_info = 6;
|
|
}
|
|
|
|
// 动态红点请求参数
|
|
message DynRedReq {
|
|
//
|
|
enum DynRedReqScene {
|
|
//
|
|
RED_REQ_NONE = 0;
|
|
//
|
|
RED_REQ_RETURN_TO_TAB_1 = 1;
|
|
//
|
|
RED_REQ_PERIODICALLY_AWAKE = 2;
|
|
//
|
|
RED_REQ_SWITCH_ACCOUNT = 3;
|
|
}
|
|
|
|
// 参见 [`TabOffset`]
|
|
repeated TabOffset tab_offset = 1;
|
|
//
|
|
bool is_new_install = 2;
|
|
//
|
|
bool is_code_start = 3;
|
|
//
|
|
repeated int64 new_follow_up_mids = 4;
|
|
//
|
|
DynRedReq.DynRedReqScene req_scene = 5;
|
|
}
|
|
|
|
// 动态红点样式
|
|
message DynRedStyle {
|
|
//
|
|
BgType bg_type = 1;
|
|
//
|
|
CornerType corner_type = 2;
|
|
//
|
|
int32 display_time = 3;
|
|
//
|
|
string corner_mark = 4;
|
|
//
|
|
DynRedStyleUp up = 5;
|
|
//
|
|
StyleType type = 6;
|
|
//
|
|
CornerInfo corner_info = 7;
|
|
}
|
|
|
|
//
|
|
message DynRedStyleUp {
|
|
//
|
|
int64 uid = 1;
|
|
//
|
|
string face = 2;
|
|
//
|
|
StyleType face_type = 3;
|
|
//
|
|
Color border_color = 4;
|
|
}
|
|
|
|
// 动态 tab
|
|
message DynTab {
|
|
// tab 标题
|
|
//
|
|
// 优先展示用, 未开启状态第一次请求返回 `同城`, 后续请求返回对应城市名
|
|
string title = 1;
|
|
// 跳转链接
|
|
string uri = 2;
|
|
// 气泡内容
|
|
string bubble = 3;
|
|
// 是否推红点
|
|
int32 red_point = 4;
|
|
// 城市 ID
|
|
int64 city_id = 5;
|
|
// 是否弹窗
|
|
int32 is_popup = 6;
|
|
// 弹窗内容
|
|
Popup popup = 7;
|
|
// 是否默认 tab
|
|
bool default_tab = 8;
|
|
// 副标题
|
|
//
|
|
// 对应城市名
|
|
string sub_title = 9;
|
|
// 锚点字段
|
|
string anchor = 10;
|
|
// ? 内部测试
|
|
string internal_test = 11;
|
|
}
|
|
|
|
// 动态 tab 请求返回值
|
|
message DynTabReply {
|
|
// 参见 [`DynTab`]
|
|
repeated DynTab dyn_tab = 1;
|
|
}
|
|
|
|
// 动态 tab 请求参数
|
|
message DynTabReq {
|
|
// 青少年模式
|
|
int32 teenagers_mode = 1;
|
|
}
|
|
|
|
// 最近访问标记已读请求参数
|
|
message DynUpdOffsetReq {
|
|
// 被访问者的 mid
|
|
int64 host_uid = 1;
|
|
// 用户已读进度
|
|
string read_offset = 2;
|
|
}
|
|
|
|
// 最近访问个人视频 feed 流返回值
|
|
message DynVideoPersonalReply {
|
|
// 参见 [`DynamicItem`]
|
|
repeated DynamicItem list = 1;
|
|
// 偏移量
|
|
string offset = 2;
|
|
// 是否还有更多
|
|
int32 has_more = 3;
|
|
// 已读进度
|
|
string read_offset = 4;
|
|
}
|
|
|
|
// 最近访问个人视频 feed 流请求参数
|
|
message DynVideoPersonalReq {
|
|
// 青少年模式
|
|
int32 teenagers_mode = 1;
|
|
// 被访问者的 mid
|
|
int64 host_uid = 2;
|
|
// 偏移量
|
|
//
|
|
// 第一页可传空
|
|
string offset = 3;
|
|
// 标明下拉几次
|
|
int32 page = 4;
|
|
// 是否是预加载
|
|
int32 is_preload = 5;
|
|
// 清晰度 (供秒开)
|
|
int32 qn = 6;
|
|
// 功能版本号 (供秒开)
|
|
int32 fnver = 7;
|
|
// 功能标识 (供秒开)
|
|
int32 fnval = 8;
|
|
// 返回 playurl 是否强制使用域名 (供秒开)
|
|
int32 force_host = 9;
|
|
// 是否需要 4K 视频 (供秒开)
|
|
int32 fourk = 10;
|
|
}
|
|
|
|
// 动态视频页请求参数
|
|
message DynVideoReq {
|
|
// 青少年模式
|
|
int32 teenagers_mode = 1;
|
|
// 透传参数
|
|
string update_baseline = 2;
|
|
// 透传参数
|
|
string offset = 3;
|
|
// 向下翻页数
|
|
int32 page = 4;
|
|
// 刷新方式
|
|
//
|
|
// - 1: 向上刷新
|
|
// - 2: 向下翻页
|
|
int32 refresh_type = 5;
|
|
// 清晰度 (供秒开)
|
|
int32 qn = 6;
|
|
// 功能版本号 (供秒开)
|
|
int32 fnver = 7;
|
|
// 功能标识 (供秒开)
|
|
int32 fnval = 8;
|
|
// 返回 playurl 是否强制使用域名 (供秒开)
|
|
int32 force_host = 9;
|
|
// 是否需要 4K 视频 (供秒开)
|
|
int32 fourk = 10;
|
|
}
|
|
|
|
// 动态视频页返回值
|
|
message DynVideoReqReply {
|
|
// 动态列表
|
|
repeated DynamicItem list = 1;
|
|
// 更新的动态数
|
|
int32 update_num = 2;
|
|
// 历史偏移
|
|
string history_offset = 3;
|
|
// 更新基础信息
|
|
string update_baseline = 4;
|
|
// 是否还有更多
|
|
int32 has_more = 5;
|
|
}
|
|
|
|
// 动态卡片项
|
|
message DynamicItem {
|
|
// 动态卡片类型
|
|
//
|
|
// - 转发: `forward`
|
|
// - 稿件视频: `av`
|
|
// - 折叠: `fold`
|
|
// - PGC 内容: `pgc`
|
|
// - 付费视频: `courses`
|
|
// - 最近访问列表: `upList`
|
|
// - 我的追番列表: `followList`
|
|
string card_type = 1;
|
|
// 转发类型的 items 的类型
|
|
string item_type = 2;
|
|
// 模块内容
|
|
repeated Module modules = 3;
|
|
// 动态 ID (string)
|
|
string dyn_id_str = 4;
|
|
// 转发源动态 ID(string)
|
|
string orig_dyn_id_str = 5;
|
|
//
|
|
int32 r_type = 6;
|
|
// 该卡片下面是否含折叠卡片
|
|
int32 has_fold = 7;
|
|
}
|
|
|
|
//
|
|
message Exp {
|
|
//
|
|
string exp_name = 1;
|
|
//
|
|
string exp_group = 2;
|
|
}
|
|
|
|
//
|
|
message ExpConf {
|
|
//
|
|
int32 exp_enable = 1;
|
|
//
|
|
repeated Exp exps = 2;
|
|
}
|
|
|
|
// 拓展信息: 游戏小卡
|
|
message ExtInfoGame {
|
|
// 标题
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 图标
|
|
string icon = 3;
|
|
}
|
|
|
|
// 拓展信息: 热门视频
|
|
message ExtInfoHot {
|
|
// 标题
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 图标
|
|
string icon = 3;
|
|
}
|
|
|
|
// 拓展信息: LBS
|
|
message ExtInfoLBS {
|
|
// 标题
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 图标
|
|
string icon = 3;
|
|
//
|
|
int32 poi_type = 4;
|
|
}
|
|
|
|
// 拓展信息: 话题小卡
|
|
message ExtInfoTopic {
|
|
// 话题名
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 图标
|
|
string icon = 3;
|
|
}
|
|
|
|
// 拓展
|
|
message Extend {
|
|
// 类型
|
|
//
|
|
// - 话题小卡: `topic`
|
|
// - lbs: `lbs`
|
|
// - 热门视频: `hot`
|
|
// - 游戏: `game`
|
|
oneof extend {
|
|
// 参见 [`ExtInfoTopic`]
|
|
ExtInfoTopic ext_info_topic = 2;
|
|
// 参见 [`ExtInfoLBS`]
|
|
ExtInfoLBS ext_info_lbs = 3;
|
|
// 参见 [`ExtInfoHot`]
|
|
ExtInfoHot ext_info_hot = 4;
|
|
// 参见 [`ExtInfoGame`]
|
|
ExtInfoGame ext_info_game = 5;
|
|
}
|
|
// 类型
|
|
//
|
|
// - 话题小卡: `topic`
|
|
// - lbs: `lbs`
|
|
// - 热门视频: `hot`
|
|
// - 游戏: `game`
|
|
string type = 1;
|
|
}
|
|
|
|
// 折叠分类
|
|
enum FoldType {
|
|
// 占位
|
|
FoldTypeZero = 0;
|
|
// 用户发布折叠
|
|
FoldTypePublish = 1;
|
|
// 转发超频折叠
|
|
FoldTypeFrequent = 2;
|
|
// 联合投稿折叠
|
|
FoldTypeUnite = 3;
|
|
// 动态受限折叠
|
|
FoldTypeLimit = 4;
|
|
}
|
|
|
|
// 我的追番列表项目
|
|
message FollowListItem {
|
|
// 剧集 ID
|
|
int32 season_id = 1;
|
|
// 标题
|
|
string title = 2;
|
|
// 封面
|
|
string cover = 3;
|
|
// 跳转链接
|
|
string url = 4;
|
|
// 剧集最新分集
|
|
NewEP new_ep = 5;
|
|
}
|
|
|
|
//
|
|
message GeoCoderReply {
|
|
//
|
|
string address = 1;
|
|
//
|
|
AddressComponent address_component = 2;
|
|
//
|
|
AdInfo ad_info = 3;
|
|
}
|
|
|
|
//
|
|
message GeoCoderReq {
|
|
//
|
|
double lat = 1;
|
|
//
|
|
double lng = 2;
|
|
//
|
|
string from = 3;
|
|
}
|
|
|
|
//
|
|
message Gps {
|
|
//
|
|
double lat = 1;
|
|
//
|
|
double lng = 2;
|
|
}
|
|
|
|
// 点赞动画
|
|
message LikeAnimation {
|
|
// 开始动画
|
|
string begin = 1;
|
|
// 过程动画
|
|
string proc = 2;
|
|
// 结束动画
|
|
string end = 3;
|
|
// ID
|
|
int64 like_icon_id = 4;
|
|
}
|
|
|
|
// 点赞拓展信息
|
|
message LikeInfo {
|
|
// 点赞动画
|
|
LikeAnimation animation = 1;
|
|
// 是否点赞
|
|
int32 is_like = 2;
|
|
}
|
|
|
|
// 点赞用户
|
|
message LikeUser {
|
|
// 点赞用户 mid
|
|
int64 uid = 1;
|
|
// 点赞用户昵称
|
|
string uname = 2;
|
|
// 点击跳转链接
|
|
string uri = 3;
|
|
}
|
|
|
|
// 直播信息
|
|
message LiveInfo {
|
|
// 正在直播
|
|
int32 is_living = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
}
|
|
|
|
// 播放器类型
|
|
enum MediaType {
|
|
// 本地
|
|
MediaTypeNone = 0;
|
|
// UGC
|
|
MediaTypeUGC = 1;
|
|
// PGC
|
|
MediaTypePGC = 2;
|
|
// 直播
|
|
MediaTypeLive = 3;
|
|
// 小视频
|
|
MediaTypeVCS = 4;
|
|
}
|
|
|
|
//
|
|
message MixUpListItem {
|
|
//
|
|
int64 uid = 1;
|
|
//
|
|
int32 special_attention = 2;
|
|
//
|
|
int32 reddot_state = 3;
|
|
//
|
|
MixUpListLiveItem live_info = 4;
|
|
//
|
|
string name = 5;
|
|
//
|
|
string face = 6;
|
|
//
|
|
OfficialVerify official = 7;
|
|
//
|
|
VipInfo vip = 8;
|
|
//
|
|
Relation relation = 9;
|
|
//
|
|
int32 premiere_state = 10;
|
|
//
|
|
string uri = 11;
|
|
}
|
|
|
|
//
|
|
message MixUpListLiveItem {
|
|
//
|
|
bool status = 1;
|
|
//
|
|
int64 room_id = 2;
|
|
//
|
|
string uri = 3;
|
|
}
|
|
|
|
// 卡片模块
|
|
message Module {
|
|
// - 折叠: `fold`
|
|
// - 发布人: `author`
|
|
// - 动态卡片内容: `dynamic`
|
|
// - 描述信息: `desc`
|
|
// - 争议小黄条: `dispute`
|
|
// - 转发: `forward`
|
|
// - 点赞用户: `likeUser`
|
|
// - 小卡信息: `extend`
|
|
// - 计数信息: `state`
|
|
// - 最近访问列表: `upList`
|
|
// - 我的追番: `followList`
|
|
oneof module_item {
|
|
// 参见 [`ModuleFold`]
|
|
ModuleFold module_fold = 2;
|
|
// 参见 [`ModuleAuthor`]
|
|
ModuleAuthor module_author = 3;
|
|
// 参见 [`ModuleDynamic`]
|
|
ModuleDynamic module_dynamic = 4;
|
|
// 参见 [`ModuleState`]
|
|
ModuleState module_state = 5;
|
|
// 参见 [`ModuleForward`]
|
|
ModuleForward module_forward = 6;
|
|
// 参见 [`ModuleExtend`]
|
|
ModuleExtend module_extend = 7;
|
|
// 参见 [`ModuleDispute`]
|
|
ModuleDispute module_dispute = 8;
|
|
// 参见 [`ModuleDesc`]
|
|
ModuleDesc module_desc = 9;
|
|
// 参见 [`ModuleLikeUser`]
|
|
ModuleLikeUser module_like_user = 10;
|
|
// 参见 [`ModuleDynUpList`]
|
|
ModuleDynUpList module_up_list = 11;
|
|
// 参见 [`ModuleFollowList`]
|
|
ModuleFollowList module_follow_list = 12;
|
|
}
|
|
//
|
|
string module_type = 1;
|
|
}
|
|
|
|
// Module: 作者信息
|
|
message ModuleAuthor {
|
|
// 作者 mid
|
|
int64 id = 1;
|
|
// 时间标签
|
|
string ptime_label_text = 2;
|
|
// 用户详情
|
|
UserInfo author = 3;
|
|
// 装扮卡片
|
|
DecorateCard decorate_card = 4;
|
|
}
|
|
|
|
// Module: 文本内容
|
|
message ModuleDesc {
|
|
//
|
|
repeated Description desc = 1;
|
|
}
|
|
|
|
// Module: 争议小黄条
|
|
message ModuleDispute {
|
|
// 标题
|
|
string title = 1;
|
|
// 描述
|
|
string desc = 2;
|
|
// 跳转地址
|
|
string uri = 3;
|
|
}
|
|
|
|
// 最近访问 UP 主列表
|
|
message ModuleDynUpList {
|
|
// 标题展示文案
|
|
string module_title = 1;
|
|
// "全部" 按钮文案
|
|
string show_all = 2;
|
|
// UP 主列表
|
|
repeated UpListItem list = 3;
|
|
}
|
|
|
|
// Module: 动态详情
|
|
message ModuleDynamic {
|
|
// 动态卡片类型
|
|
oneof card {
|
|
// UGC 视频卡片
|
|
CardUGC card_ugc = 2;
|
|
// PGC 视频卡片
|
|
CardPGC card_pgc = 3;
|
|
// 付费课程系列
|
|
CardCurrSeason card_curr_season = 4;
|
|
// 付费课程批次
|
|
CardCurrBatch card_curr_batch = 5;
|
|
}
|
|
// 动态卡片类型
|
|
//
|
|
// - UGC 视频卡片: `ugc`
|
|
// - PGC 视频卡片: `pgc`
|
|
// - 付费课程系列: `currSeason`
|
|
// - 付费课程批次: `currBatch`
|
|
string card_type = 1;
|
|
}
|
|
|
|
// Module: 拓展
|
|
message ModuleExtend {
|
|
//
|
|
repeated Extend extend = 1;
|
|
}
|
|
|
|
// Module: 折叠
|
|
message ModuleFold {
|
|
// Deprecated, see [`Self::fold_type_v2`] instead.
|
|
FoldType fold_type = 1;
|
|
// 折叠文案
|
|
string text = 2;
|
|
// 被折叠的动态
|
|
string fold_ids = 3;
|
|
// 被折叠的用户
|
|
repeated UserInfo fold_users = 4;
|
|
// 折叠分类
|
|
FoldType fold_type_v2 = 5;
|
|
}
|
|
|
|
// 我的追番列表
|
|
message ModuleFollowList {
|
|
// 查看全部的跳转链接
|
|
string view_all_link = 1;
|
|
// 参见 [`FollowListItem`]
|
|
repeated FollowListItem list = 2;
|
|
}
|
|
|
|
// Module: 转发
|
|
message ModuleForward {
|
|
// 卡片类型
|
|
string card_type = 1;
|
|
// 嵌套的 modules
|
|
repeated Module modules = 2;
|
|
}
|
|
|
|
// Module: 点赞用户
|
|
message ModuleLikeUser {
|
|
// 点赞用户
|
|
repeated LikeUser like_users = 1;
|
|
// 文案
|
|
string display_text = 2;
|
|
}
|
|
|
|
// Module: 计数状态
|
|
message ModuleState {
|
|
// 转发数
|
|
int32 repost = 1;
|
|
// 点赞数
|
|
int32 like = 2;
|
|
// 评论数
|
|
int32 reply = 3;
|
|
// 点赞拓展信息
|
|
LikeInfo like_info = 4;
|
|
// 禁止评论
|
|
bool no_comment = 5;
|
|
// 禁止转发
|
|
bool no_forward = 6;
|
|
}
|
|
|
|
// 认证名牌
|
|
message Nameplate {
|
|
// 认证名牌 ID
|
|
int64 nid = 1;
|
|
// 认证名牌名称
|
|
string name = 2;
|
|
// 认证名牌图片
|
|
string image = 3;
|
|
// 认证名牌图片(小)
|
|
string image_small = 4;
|
|
// 等级
|
|
string level = 5;
|
|
// 获取条件
|
|
string condition = 6;
|
|
}
|
|
|
|
// 剧集最新分集
|
|
message NewEP {
|
|
// 剧集最新分集的 ID
|
|
int32 id = 1;
|
|
// 更新至 XX 话
|
|
string index_show = 2;
|
|
// 更新剧集的封面
|
|
string cover = 3;
|
|
}
|
|
|
|
//
|
|
message NoReply {
|
|
}
|
|
|
|
//
|
|
message NoReq {
|
|
}
|
|
|
|
// 认证信息
|
|
message OfficialVerify {
|
|
// - 0: 个人
|
|
// - 1: 官方
|
|
// - 127: 未认证
|
|
int32 type = 1;
|
|
// 认证描述
|
|
string desc = 2;
|
|
//
|
|
int32 is_atten = 3;
|
|
}
|
|
|
|
//
|
|
message OurCityClickReportReply {
|
|
}
|
|
|
|
//
|
|
message OurCityClickReportReq {
|
|
//
|
|
string dynamic_id = 1;
|
|
//
|
|
int64 city_id = 2;
|
|
//
|
|
double lat = 3;
|
|
//
|
|
double lng = 4;
|
|
}
|
|
|
|
// PGC 剧集信息
|
|
message PGCSeason {
|
|
// 已完结
|
|
int32 is_finish = 1;
|
|
// 标题
|
|
string title = 2;
|
|
// 类型
|
|
int32 type = 3;
|
|
}
|
|
|
|
//
|
|
message PlayerPreloadParams {
|
|
//
|
|
int32 qn = 1;
|
|
//
|
|
int32 fnver = 2;
|
|
//
|
|
int32 fnval = 3;
|
|
//
|
|
int32 force_host = 4;
|
|
//
|
|
int32 fourk = 5;
|
|
}
|
|
|
|
// 动态 tab 弹窗详情
|
|
message Popup {
|
|
// 标题
|
|
string title = 1;
|
|
// 文案
|
|
string desc = 2;
|
|
// 文案附加跳转地址
|
|
string uri = 3;
|
|
}
|
|
|
|
//
|
|
message Relation {
|
|
//
|
|
RelationStatus status = 1;
|
|
//
|
|
int32 is_follow = 2;
|
|
//
|
|
int32 is_followed = 3;
|
|
//
|
|
string title = 4;
|
|
}
|
|
|
|
//
|
|
enum RelationStatus {
|
|
//
|
|
relation_status_none = 0;
|
|
//
|
|
relation_status_nofollow = 1;
|
|
//
|
|
relation_status_follow = 2;
|
|
//
|
|
relation_status_followed = 3;
|
|
//
|
|
relation_status_mutual_concern = 4;
|
|
//
|
|
relation_status_special = 5;
|
|
}
|
|
|
|
//
|
|
message SVideoItem {
|
|
//
|
|
string card_type = 1;
|
|
//
|
|
repeated SVideoModule modules = 2;
|
|
//
|
|
string dyn_id_str = 3;
|
|
//
|
|
int64 index = 4;
|
|
}
|
|
|
|
//
|
|
message SVideoModule {
|
|
//
|
|
oneof module_item {
|
|
//
|
|
SVideoModuleAuthor module_author = 2;
|
|
//
|
|
SVideoModulePlayer module_player = 3;
|
|
//
|
|
SVideoModuleDesc module_desc = 4;
|
|
//
|
|
SVideoModuleStat module_stat = 5;
|
|
}
|
|
//
|
|
string module_type = 1;
|
|
}
|
|
|
|
//
|
|
message SVideoModuleAuthor {
|
|
//
|
|
int64 mid = 1;
|
|
//
|
|
string name = 2;
|
|
//
|
|
string face = 3;
|
|
//
|
|
string pub_desc = 4;
|
|
//
|
|
int32 is_attention = 5;
|
|
//
|
|
string uri = 6;
|
|
}
|
|
|
|
//
|
|
message SVideoModuleDesc {
|
|
//
|
|
string text = 1;
|
|
//
|
|
string uri = 2;
|
|
}
|
|
|
|
//
|
|
message SVideoModulePlayer {
|
|
//
|
|
string title = 1;
|
|
//
|
|
string cover = 2;
|
|
//
|
|
string uri = 3;
|
|
//
|
|
int64 aid = 4;
|
|
//
|
|
int64 cid = 5;
|
|
//
|
|
int64 duration = 6;
|
|
//
|
|
Dimension dimension = 7;
|
|
}
|
|
|
|
//
|
|
message SVideoModuleStat {
|
|
//
|
|
repeated SVideoStatInfo stat_info = 1;
|
|
//
|
|
ShareInfo share_info = 2;
|
|
}
|
|
|
|
//
|
|
message SVideoReply {
|
|
//
|
|
repeated SVideoItem list = 1;
|
|
//
|
|
string offset = 2;
|
|
//
|
|
int32 has_more = 3;
|
|
//
|
|
SVideoTop top = 4;
|
|
}
|
|
|
|
// 小视频连播页请求参数
|
|
message SVideoReq {
|
|
//
|
|
int64 oid = 1;
|
|
//
|
|
SVideoType type = 2;
|
|
//
|
|
string offset = 3;
|
|
//
|
|
int32 qn = 4;
|
|
//
|
|
int32 fnver = 5;
|
|
//
|
|
int32 fnval = 6;
|
|
//
|
|
int32 force_host = 7;
|
|
//
|
|
int32 fourk = 8;
|
|
//
|
|
string spmid = 9;
|
|
//
|
|
string from_spmid = 10;
|
|
//
|
|
PlayerPreloadParams player_preload = 11;
|
|
//
|
|
int64 focus_aid = 12;
|
|
//
|
|
bilibili.app.archive.middleware.v1.PlayerArgs player_args = 13;
|
|
}
|
|
|
|
//
|
|
message SVideoStatInfo {
|
|
//
|
|
int32 icon = 1;
|
|
//
|
|
int64 num = 2;
|
|
//
|
|
int32 selected = 3;
|
|
//
|
|
string uri = 4;
|
|
}
|
|
|
|
//
|
|
message SVideoTop {
|
|
//
|
|
string title = 1;
|
|
//
|
|
string desc = 2;
|
|
}
|
|
|
|
//
|
|
enum SVideoType {
|
|
//
|
|
TypeNone = 0;
|
|
//
|
|
TypeDynamic = 1;
|
|
//
|
|
TypePopularIndex = 2;
|
|
//
|
|
TypePopularHotword = 3;
|
|
}
|
|
|
|
// 分享信息
|
|
message ShareInfo {
|
|
// 稿件 avid
|
|
int64 aid = 1;
|
|
// 稿件 bvid
|
|
string bvid = 2;
|
|
// 稿件标题
|
|
string title = 3;
|
|
// 稿件字幕
|
|
string subtitle = 4;
|
|
// 稿件方面
|
|
string cover = 5;
|
|
// UP 主 mid
|
|
int64 mid = 6;
|
|
// UP 主昵称
|
|
string name = 7;
|
|
}
|
|
|
|
//
|
|
enum StyleType {
|
|
//
|
|
STYLE_TYPE_NONE = 0;
|
|
//
|
|
STYLE_TYPE_LIVE = 1;
|
|
//
|
|
STYLE_TYPE_DYN_UP = 2;
|
|
//
|
|
STYLE_TYPE_OGV_UP = 3;
|
|
//
|
|
STYLE_TYPE_COLLECTION_UP = 4;
|
|
}
|
|
|
|
// 动态红点接口各 tab offset 信息
|
|
message TabOffset {
|
|
// - 1: 综合页
|
|
// - 2: 视频页
|
|
int32 tab = 1;
|
|
// 上一次对应列表页 offset
|
|
string offset = 2;
|
|
}
|
|
|
|
// UP 主列表
|
|
message UpListItem {
|
|
// 是否有更新
|
|
int32 has_update = 1;
|
|
// 头像
|
|
string face = 2;
|
|
// 昵称
|
|
string name = 3;
|
|
// mid
|
|
int64 uid = 4;
|
|
}
|
|
|
|
// 用户信息
|
|
message UserInfo {
|
|
// 用户 mid
|
|
int64 mid = 1;
|
|
// 用户昵称
|
|
string name = 2;
|
|
// 用户头像
|
|
string face = 3;
|
|
// 用户认证信息
|
|
OfficialVerify official = 4;
|
|
// 用户大会员信息
|
|
VipInfo vip = 5;
|
|
// 用户直播信息
|
|
LiveInfo live = 6;
|
|
// 空间页跳转链接
|
|
string uri = 7;
|
|
// 挂件
|
|
UserPendant pendant = 8;
|
|
// 认证名牌
|
|
Nameplate nameplate = 9;
|
|
}
|
|
|
|
// 挂件
|
|
message UserPendant {
|
|
// 挂件 ID
|
|
int64 pid = 1;
|
|
// 挂件名称
|
|
string name = 2;
|
|
// 挂件图片
|
|
string image = 3;
|
|
// 挂件有效期
|
|
int64 expire = 4;
|
|
}
|
|
|
|
// 角标
|
|
message VideoBadge {
|
|
// 文案
|
|
string text = 1;
|
|
// 文案文本颜色
|
|
string text_color = 2;
|
|
// 文案文本颜色 (暗黑模式下)
|
|
string text_color_night = 3;
|
|
// 背景颜色
|
|
string bg_color = 4;
|
|
// 背景颜色 (暗黑模式下)
|
|
string bg_color_night = 5;
|
|
// 边框颜色
|
|
string border_color = 6;
|
|
// 边框颜色 (暗黑模式下)
|
|
string border_color_night = 7;
|
|
// 样式
|
|
int32 bg_style = 8;
|
|
}
|
|
|
|
// 番剧类型
|
|
enum VideoSubType {
|
|
// 没有子类型
|
|
VideoSubTypeNone = 0;
|
|
// 番剧
|
|
VideoSubTypeBangumi = 1;
|
|
// 电影
|
|
VideoSubTypeMovie = 2;
|
|
// 纪录片
|
|
VideoSubTypeDocumentary = 3;
|
|
// 国创
|
|
VideoSubTypeDomestic = 4;
|
|
// 电视剧
|
|
VideoSubTypeTeleplay = 5;
|
|
}
|
|
|
|
// 大会员信息
|
|
message VipInfo {
|
|
// 大会员类型
|
|
int32 type = 1;
|
|
// 大会员状态
|
|
int32 status = 2;
|
|
// 大会员过期时间
|
|
int64 due_date = 3;
|
|
// 大会员标签
|
|
VipLabel label = 4;
|
|
// 大会员主题
|
|
int32 theme_type = 5;
|
|
}
|
|
|
|
// 大会员标签
|
|
message VipLabel {
|
|
// 图片地址
|
|
string path = 1;
|
|
}
|
|
|