syntax = "proto3"; package bilibili.app.viewunite.v1; import "bilibili/app/archive/middleware/v1/preload.proto"; import "bilibili/app/viewunite/common.proto"; import "bilibili/pagination/pagination.proto"; import "google/protobuf/any.proto"; // 统一视频信息接口 (7.41.0+) service View { // rpc ArcRefresh(ArcRefreshReq) returns (ArcRefreshReply); // 视频详情页下方推荐 rpc RelatesFeed(RelatesFeedReq) returns (RelatesFeedReply); // rpc View(ViewReq) returns (ViewReply); // rpc ViewProgress(ViewProgressReq) returns (ViewProgressReply); } // message ActivityResource { // string dark_text_color = 1; // string divider_color = 2; // string bg_color = 3; // string selected_bg_color = 4; // string text_color = 5; // string light_text_color = 6; } // 业务信息 message Arc { // int64 aid = 1; // int64 cid = 2; // int64 duration = 3; // bilibili.app.viewunite.common.Stat stat = 4; // string bvid = 5; // int32 copyright = 6; // Rights right = 7; // string cover = 8; // int64 type_id = 9; // string title = 10; } // message ArcRefreshReply { // bilibili.app.viewunite.common.Stat stat = 1; // SimpleReqUser req_user = 2; // SimpleArc arc = 3; // Online online = 4; // LikeConfig like_config = 5; } // message ArcRefreshReq { // int64 aid = 1; // string bvid = 2; } // message AttentionCard { // repeated ShowTime show_time = 1; } // message BizFollowVideoParam { // int64 season_id = 1; } // message BizJumpLinkParam { // string url = 1; } // message BizReserveActivityParam { // int64 activity_id = 1; // string from = 2; // string type = 3; // int64 oid = 4; // int64 reserve_id = 5; } // message BizReserveGameParam { // int64 game_id = 1; } enum BizType { // BizTypeNone = 0; // BizTypeFollowVideo = 1; // BizTypeReserveActivity = 2; // BizTypeJumpLink = 3; // BizTypeFavSeason = 4; // BizTypeReserveGame = 5; } // message Button { // string title = 1; // string uri = 2; // string icon = 3; // JumpShowType jump_show_type = 4; } // message ChargingPlus { // bool pass = 1; // repeated PlayToast play_toast = 2; } // message Chronos { // string md5 = 1; // string file = 2; // string sign = 3; } // message ChronosParam { // string engine_version = 1; // string message_protocol = 2; // string service_key = 3; } // 推广信息 message CM { // google.protobuf.Any cm_under_player = 1; // google.protobuf.Any ads_control = 2; // repeated google.protobuf.Any source_content = 3; } // message CommandDm { // int64 id = 1; // int64 oid = 2; // int64 mid = 3; // string command = 4; // string content = 5; // int32 progress = 6; // string ctime = 7; // string mtime = 8; // string extra = 9; // string idstr = 10; } // 播放器配置 message Config { // Online online = 1; // PlayerIcon player_icon = 2; // StoryEntrance story_entrance = 3; } // 视频播放时弹出的卡片 message ContractCard { // 在第几秒弹出 float display_progress = 1; // int64 display_accuracy = 2; // 弹出后停留的时间 int64 display_duration = 3; // 展示方式, 暂未知对应关系 int32 show_mode = 4; // 页面类型, 暂未知对应关系 int32 page_type = 5; // UpperInfos upper = 6; // int32 is_follow_display = 7; // 卡片的文字说明信息 ContractText text = 8; // int64 follow_display_end_duration = 9; // int32 is_play_display = 10; // int32 is_interact_display = 11; } // 视频播放时弹出的卡片的文字说明信息 message ContractText { // string title = 1; // string subtitle = 2; // string inline_title = 3; } // message Control { // bool limit = 1; } // message DmResource { // repeated CommandDm command_dms = 1; // AttentionCard attention = 2; // repeated OperationCard cards = 3; } enum ECode { // CODE_DEFAULT = 0; // CODE_404 = 1; // 青少年限制 CODE_TEENAGER = 78301; } // message ECodeConfig { // string redirect_url = 1; } // message IconData { // string meta_json = 1; // string sprits_img = 2; } // 视频介绍 Tab message IntroductionTab { // string title = 1; // repeated bilibili.app.viewunite.common.Module modules = 2; } enum JumpShowType { // JST_DEFAULT = 0; // JST_FULLSCREEN = 1; // JST_HALFSCREEN = 2; } // message LikeConfig { bilibili.app.viewunite.common.UpLikeImg triple_like = 1; // string like_animation = 2; } // 素材详情 message Material { // string icon = 1; // string text = 2; // string url = 3; // MaterialBizType type = 4; // string param = 5; // string static_icon = 6; // string bg_color = 7; // string bg_pic = 8; // int32 jump_type = 9; // PageType page_type = 10; // bool need_login = 11; } // 素材类型 enum MaterialBizType { // NONE = 0; // ACTIVITY = 1; // BGM = 2; // EFFECT = 3; // SHOOT_SAME = 4; // SHOOT_TOGETHER = 5; // ACTIVITY_ICON = 6; // NEW_BGM = 7; } // 素材来源 enum MaterialSource { // DEFAULT = 0; // 必剪素材 BIJIAN = 1; } // message Online { // bool online_show = 1; } // message OperationCard { // int64 id = 1; // int32 from = 2; // int32 to = 3; // bool status = 4; // BizType biz_type = 5; // OperationCardContent content = 6; // oneof param { // BizFollowVideoParam follow = 7; // BizReserveActivityParam reserve = 8; // BizJumpLinkParam jump = 9; // BizReserveGameParam game = 10; } } // message OperationCardContent { // string title = 1; // string subtitle = 2; // string icon = 3; // string button_title = 4; // string button_selected_title = 5; // bool show_selected = 6; } // enum PageCategory { // COMMON_PAGE = 0; // ACTIVITY_PAGE = 1; } // message PageControl { Control toast_show = 1; Control material_show = 2; Control up_show = 3; } // 页面类型 enum PageType { // H5页面(Webview) H5 = 0; // 原生页面(native) NA = 1; } // message PlayerIcon { // string url1 = 1; // string hash1 = 2; // string url2 = 3; // string hash2 = 4; // string drag_left_png = 5; // string middle_png = 6; // string drag_right_png = 7; // IconData drag_data = 8; // IconData nodrag_data = 9; } // message PlayToast { // PlayToastEnum business = 1; // string icon_url = 2; // string text = 3; } enum PlayToastEnum { // PLAYTOAST_UNKNOWN = 0; // PLAYTOAST_CHARGINGPLUS = 1; } // message PointMaterial { // string url = 1; // MaterialSource material_source = 2; } // message Relate { // int64 device_type = 1; // bilibili.pagination.Pagination pagination = 2; } // 视频详情页下方推荐 Reply message RelatesFeedReply { // repeated bilibili.app.viewunite.common.RelateCard relates = 1; // bilibili.pagination.Pagination pagination = 2; } // 视频详情页下方推荐 Req message RelatesFeedReq { // int64 aid = 1; // string bvid = 2; // string from = 3; // string spmid = 4; // string from_spmid = 5; // bilibili.app.archive.middleware.v1.PlayerArgs player_args = 6; // bilibili.pagination.Pagination pagination = 7; // string session_id = 8; // int64 auto_play = 9; // string from_track_id = 10; } // message ReplyStyle { // string badge_url = 1; // string badge_text = 2; // int64 badge_type = 3; } // message ReplyTab { // ReplyStyle reply_style = 1; // string title = 2; // TabControl control = 3; } // message ReqUser { // int32 favorite = 1; // int32 like = 2; // int32 coin = 3; // int32 fav_season = 4; // int32 follow = 5; // int32 dislike = 6; // 头像旁充电按钮 Button elec_plus_btn = 7; // ChargingPlus charging_plus = 8; } // message Rights { // bool only_vip_download = 1; // bool no_reprint = 2; // bool download = 3; } // message ShowTime { // int32 start_time = 1; // int32 end_time = 2; // double pos_x = 3; // double pos_y = 4; } // message SimpleArc { // int32 copyright = 1; } // message SimpleReqUser { // int32 favorite = 1; // int32 like = 2; // int32 coin = 3; } // message StoryEntrance { // bool arc_play_story = 1; // string story_icon = 2; // bool arc_landscape_story = 3; // string landscape_icon = 4; // bool play_story = 5; } // message Tab { // repeated TabModule tab_module = 1; // string tab_bg = 2; // TabControl danmaku_entrance = 3; } // 评论区/弹幕 Tab 控制 message TabControl { // bool limit = 1; // bool disable = 2; // string disable_click_tip = 3; } // message TabModule { // TabType tab_type = 1; // oneof tab { // IntroductionTab introduction = 2; // ReplyTab reply = 3; // bilibili.app.viewunite.common.ActivityTab activity_tab = 4; } } enum TabType { // TAB_NONE = 0; // 详情 Tab TAB_INTRODUCTION = 1; // 评论区 Tab TAB_REPLY = 2; // OGV 活动信息 Tab TAB_OGV_ACTIVITY = 3; } // enum UnionType { // UGC = 0; // OGV = 1; } // UP主信息(可是Upper这个... 程序员英文不过关吧? ) message UpperInfos { // 粉丝数 uint64 fans_count = 1; // 过去半年内的稿件数 uint64 arc_count_last_half_year = 2; // int64 first_up_dates = 3; // UP稿件总播放数 uint64 total_play_count = 4; } // message VideoGuide { // repeated Material material = 1; // VideoViewPoint video_point = 2; // ContractCard contract_card = 3; } // message VideoPoint { // int32 type = 1; // int64 from = 2; // int64 to = 3; // string content = 4; // string cover = 5; // string logo_url = 6; } // message VideoShot { // string pv_data = 1; // int32 img_x_len = 2; // int32 imd_x_size = 3; // int32 img_y_len = 4; // int32 img_y_size = 5; // repeated string image = 6; } // message VideoViewPoint { // repeated VideoPoint points = 1; // PointMaterial point_material = 2; // bool point_permanent = 3; } // message ViewBase { // BizType biz_type = 1; // PageType page_type = 2; // PageControl control = 3; // ActivityResource activity_resource = 4; // Config config = 5; } // message ViewProgressReply { // VideoGuide video_guide = 1; // Chronos chronos = 2; // VideoShot arc_shot = 3; // DmResource dm = 4; } // message ViewProgressReq { // uint64 aid = 1; // uint64 cid = 2; // uint64 up_mid = 3; // ChronosParam chronos_param = 4; // UnionType type = 5; } // message ViewReply { // ViewBase view_base = 1; // Arc arc = 2; // ReqUser req_user = 3; // bilibili.app.viewunite.common.Owner owner = 4; // Tab tab = 5; // google.protobuf.Any supplement = 6; // CM cm = 7; // ECode ecode = 8; // ECodeConfig ecode_config = 9; // map report = 10; } // message ViewReq { // uint64 aid = 1; // string bvid = 2; // string from = 3; // string spmid = 4; // string from_spmid = 5; // string session_id = 6; // bilibili.app.archive.middleware.v1.PlayerArgs player_args = 7; // string track_id = 8; // map extra_content = 9; // string play_mode = 10; // Relate relate = 11; // string biz_extra = 12; // string ad_extra = 13; }