syntax = "proto3";

package bilibili.pgc.gateway.player.v2;

option java_multiple_files = true;

import "google/protobuf/timestamp.proto";

// 视频url
service PlayURL {
  // 播放页信息
  rpc PlayView (PlayViewReq) returns (PlayViewReply);
  //
  rpc PlayViewComic(PlayViewReq) returns (PlayViewReply);
}

//
message Animation {
  //
  map<string, string> qn_svga_animation_map = 1;
}

//
message AudioMaterialProto {
  //
  string audio_id = 1;
  //
  string title = 2;
  //
  string edition = 3;
  //
  uint64 person_id = 4;
  //
  string person_name = 5;
  //
  string person_avatar = 6;
  //
  repeated DashItem audio = 7;
}

// 角标信息
message BadgeInfo {
  // 角标文案
  string text = 1;
  // 角标色值
  string bg_color = 2;
  // 角标色值-夜间模式
  string bg_color_night = 3;
  // 文案色值
  string text_color = 4;
  // ? 新版本客户端已弃用此项
  GradientColor bg_gradient_color = 5;
  //
  string img = 6;
}

// Dialog组件: 底部显示
message BottomDisplay {
  // 文案
  TextInfo title = 1;
  // 图标
  string icon = 2;
}

// 按钮信息
message ButtonInfo {
  // 按钮文案
  string text = 1;
  // 按钮字体色值
  string text_color = 2;
  // 按钮字体色值-夜间模式
  string text_color_night = 3;
  // 按钮背景色
  string bg_color = 4;
  // 按钮背景色-夜间模式
  string bg_color_night = 5;
  // 按钮链接
  string link = 6;
  // 按钮动作类型
  string action_type = 7;
  // 角标信息
  BadgeInfo badge_info = 8;
  // 埋点上报信息
  Report report = 9;
  // 左侧删除线样式文案
  string left_strikethrough_text = 10;
  // 缩略按钮文案信息
  TextInfo simple_text_info = 11;
  // 缩略按钮背景色值
  string simple_bg_color = 12;
  // 缩略按钮字体色值-夜间模式
  string simple_bg_color_night = 13;
  //
  GradientColor bg_gradient_color = 14;
  //
  map<string, string> order_report_params = 15;
  //
  TaskParam task_param = 16;
  //
  string pc_link = 17;
}

// 投屏限制. code = 0 时为无限制, 否则表示不不允许投屏并提示message
message CastTips {
  //
  int32 code = 1;
  //
  string message = 2;
}

// 跳过片头/片尾配置
message ClipInfo {
  //
  int64 material_no = 1;
  // DASH分段始
  int32 start = 2;
  // DASH分段终
  int32 end = 3;
  // Clip类型
  ClipType clip_type = 4;
  // 跳过片头/片尾时的提示语
  string toast_text = 5;
  //
  MultiView multi_view = 6;
}

// 跳过片头/片尾配置: Clip类型
enum ClipType {
  NT_UNKNOWN = 0;           //
  CLIP_TYPE_OP = 1;         // 跳过OP
  CLIP_TYPE_ED = 2;         // 跳过ED
  CLIP_TYPE_HE = 3;         //
  CLIP_TYPE_MULTI_VIEW = 4; //
  CLIP_TYPE_AD = 5;         //
}

// 编码类型
enum CodeType {
  NOCODE = 0;  // 默认
  CODE264 = 1; // H.264
  CODE265 = 2; // H.265
}

//
message ContinuePlayInfo {
  //
  int64 continue_play_ep_id = 1;
}

// 优惠券
message Coupon {
  // 优惠券token
  string coupon_token = 1;
  // 优惠券类型
  // 1:折扣券 2:满减券 3:兑换券
  int64 type = 2;
  // 优惠券面值
  string value = 3;
  // 优惠券使用描述
  string use_desc = 4;
  // 优惠券标题
  string title = 5;
  // 优惠券描述
  string desc = 6;
  // 优惠券支付按钮文案
  string pay_button_text = 7;
  // 优惠券支付按钮删除线文案
  string pay_button_text_line_through = 8;
  // 实付金额
  string real_amount = 9;
  // 使用过期时间
  google.protobuf.Timestamp expire_time = 10;
  //
  int64 otype = 11;
  //
  string amount = 12;
}

// 优惠券信息
message CouponInfo {
  // 提示框信息
  CouponToast toast = 1;
  // 弹窗信息
  PopWin pop_win = 2;
}

// 优惠券提示框文案信息
message CouponTextInfo {
  // 提示框文案-播正片6分钟预览
  string positive_preview = 1;
  // 提示框文案-播非正片分节ep
  string section = 2;
}

// 优惠券提示框信息
message CouponToast {
  // 提示框文案信息
  CouponTextInfo text_info = 1;
  // 提示框按钮
  ButtonInfo button = 2;
}

// dash条目
message DashItem {
  // 清晰度
  uint32 id = 1;
  // 主线流
  string base_url = 2;
  // 备用流
  repeated string backup_url = 3;
  // 带宽
  uint32 bandwidth = 4;
  // 编码id
  uint32 codecid = 5;
  // md5
  string md5 = 6;
  // 视频大小
  uint64 size = 7;
  // 帧率
  string frame_rate = 8;
  // DRM widevine 密钥
  string widevine_pssh = 9;
}

// dash视频流
message DashVideo {
  // 主线流
  string base_url = 1;
  // 备用流
  repeated string backup_url = 2;
  // 带宽
  uint32 bandwidth = 3;
  // 编码id
  uint32 codecid = 4;
  // md5
  string md5 = 5;
  // 大小
  uint64 size = 6;
  // 伴音质量id
  uint32 audio_id = 7;
  // 是否非全二压
  bool no_rexcode = 8;
  // 帧率
  string frame_rate = 9;
  // 宽
  int32 width = 10;
  // 高
  int32 height = 11;
  // DRM 密钥
  string widevine_pssh = 12;
}

//
message DataControl {
  //
  bool need_watch_progress = 1;
}

// 鉴权浮层
message Dialog {
  // 鉴权限制码
  int64 code = 1;
  // 鉴权限制信息
  string msg = 2;
  // 浮层类型
  string type = 3;
  // 浮层样式类型
  string style_type = 4;
  // 浮层配置
  DialogConfig config = 5;
  // 标题
  TextInfo title = 6;
  // 副标题
  TextInfo subtitle = 7;
  // 图片信息
  ImageInfo image = 8;
  // 按钮列表
  repeated ButtonInfo button = 9;
  // 底部描述
  ButtonInfo bottom_desc = 10;
  // 埋点上报信息
  Report report = 11;
  // 倒计时 秒
  int32 count_down_sec = 12;
  // 右下描述
  TextInfo right_bottom_desc = 13;
  //
  repeated BottomDisplay bottom_display = 14;
  //
  repeated PlayList play_list = 15;
}

// 鉴权浮层配置
message DialogConfig {
  // 是否显示高斯模糊背景图
  bool is_show_cover = 1;
  // 是否响应转屏
  bool is_orientation_enable = 2;
  // 是否响应上滑吸顶
  bool is_nested_scroll_enable = 3;
  // 是否强制竖屏
  bool is_force_halfscreen_enable = 4;
  // 是否启用背景半透明
  bool is_background_translucent_enable = 5;
}

// 当前分辨率信息
message Dimension {
  // 宽
  int32 width = 1;
  // 长
  int32 height = 2;
  // 旋转角度
  int32 rotate = 3;
}

// 杜比音频信息
message DolbyItem {
  // 杜比类型
  enum Type {
    NONE = 0;   // NONE
    COMMON = 1; // 普通杜比音效
    ATMOS = 2;  // 全景杜比音效
  }
  // 杜比类型
  Type type = 1;
  // 音频流
  DashItem audio = 2;
}

// DRM技术类型
enum DrmTechType {
  NON = 0;       //
  FAIR_PLAY = 1; //
  WIDE_VINE = 2;  //
  BILI_DRM = 3; //
}

// 播放结束后的尾页Dialog
message EndPage {
  //
  Dialog dialog = 1;
  //
  bool hide = 2;
}

//
message EpInlineVideo {
  //
  int64 material_no = 1;
  //
  int64 aid = 2;
  //
  int64 cid = 3;
}

// 剧集广告信息
message EpisodeAdvertisementInfo {
  //
  int64 aid = 1;
  //
  string title = 2;
  //
  string link = 3;
  //
  int32 follow_video_bnt_flag = 4;
  //
  string next_video_title = 5;
  //
  string next_video_link = 6;
  //
  int64 cid = 7;
  //
  int32 season_id = 8;
  //
  int32 follow = 9;
}

// EP信息
message EpisodeInfo {
  //
  int32 ep_id = 1;
  //
  int64 cid = 2;
  //
  int64 aid = 3;
  //
  int64 ep_status = 4;
  //
  SeasonInfo season_info = 5;
  //
  string cover = 6;
  //
  string title = 7;
  //
  Interaction interaction = 8;
  //
  string long_title = 9;
}

//
message EpPreVideo {
  //
  int64 aid = 1;
  //
  int64 cid = 2;
}

//
message EpPublicityVideo {
  //
  enum Type {
    DATA_NOT_SET = 0;
    EP_PRE_VIDEO = 2;
    EP_INLINE = 3;
  }
  //
  Type type = 1;
  //
  oneof data {
    //
    EpPreVideo ep_pre_video = 2;
    //
    EpInlineVideo ep_inline_video = 3;
  }
}

//
enum EpPublicityVideoType {
  //
  PRE = 0;
  //
  INLINE = 1;
}

// 事件
message Event {
  // 震动
  Shake shake = 1;
}

// 放映室提示语
message FreyaConfig {
  //
  string desc = 1;
  //
  int32 type = 2;
  //
  int32 issued_cnt = 3;
  //
  bool is_always_show = 4;
  //
  int32 screen_number = 5;
  //
  int32 full_screen_number = 6;
}

// 渐变色信息
message GradientColor {
  //
  string start_color = 1;
  //
  string end_color = 2;
}

// 高画质试看信息
message HighDefinitionTrialInfo {
  //
  bool trial_able = 1;
  //
  int32 remaining_times = 2;
  //
  int32 start = 3;
  //
  int32 time_length = 4;
  //
  Toast start_toast = 5;
  //
  Toast end_toast = 6;
  //
  Report report = 7;
  //
  ButtonInfo quality_open_tip_btn = 8;
  //
  ButtonInfo no_longer_trial_btn = 9;
}

// 历史记录节点
message HistoryNode {
  // 节点ID
  int64 node_id = 1;
  // 节点标题
  string title = 2;
  // 对应CID
  int64 cid = 3;
}

// 图片信息
message ImageInfo {
  // 图片链接
  string url = 1;
}

//
enum InlineScene {
  UNKNOWN = 0;    //
  RELATED_EP = 1; //
  HE = 2;         //
  SKIP = 3;       //
}

//
enum InlineType {
  TYPE_UNKNOWN = 0; //
  TYPE_WHOLE = 1;   //
  TYPE_HE_CLIP = 2; //
  TYPE_PREVIEW = 3; //
}

// 交互信息
message Interaction {
  // 历史节点
  HistoryNode history_node = 1;
  // 版本
  int64 graph_version = 2;
  // 交互消息
  string msg = 3;
  // 是否为交互
  bool is_interaction = 4;
}

// 限制操作类型
enum LimitActionType {
  //
  LAT_UNKNOWN = 0;
  //
  SHOW_LIMIT_DIALOG = 1;
  //
  SKIP_CURRENT_EP = 2;
}

//
message MultiView {
  //
  string button_material = 1;
  //
  int64 ep_id = 2;
  //
  int64 cid = 3;
  //
  int64 avid = 4;
}

// 大会员广告: 支付提示信息
message PayTip {
  // 标题
  string title = 1;
  // 跳转链接
  string url = 2;
  // 图标
  string icon = 3;
  // 浮层类型
  int32 type = 4;
  // 显示类型
  int32 show_type = 5;
  // 图片信息
  string img = 6;
  // 白天背景颜色
  string bg_day_color = 7;
  // 夜间背景颜色
  string bg_night_color = 8;
  // 白天线条颜色
  string bg_line_color = 9;
  // 夜间线条颜色
  string bg_night_line_color = 10;
  // 文字颜色
  string text_color = 11;
  // 夜间文字颜色
  string text_night_color = 12;
  // 视图展示起始时间
  int64 view_start_time = 13;
  // 按钮列表
  repeated ButtonInfo button = 14;
  // 跳转链接打开方式
  int32 url_open_type = 15;
  // 埋点上报信息
  Report report = 16;
  // 角度样式
  int32 angle_style = 17;
  // 埋点上报类型
  int32 report_type = 18;
  // 订单埋点上报参数
  map<string, string> order_report_params = 19;
  // 巨屏图片信息
  string giant_screen_img = 20;
}

// 禁用功能配置
message PlayAbilityConf {
  bool background_play_disable = 1;   // 后台播放
  bool flip_disable = 2;              // 镜像反转
  bool cast_disable = 3;              // 投屏
  bool feedback_disable = 4;          // 反馈
  bool subtitle_disable = 5;          // 字幕
  bool playback_rate_disable = 6;     // 播放速度
  bool time_up_disable = 7;           // 定时停止
  bool playback_mode_disable = 8;     // 播放方式
  bool scale_mode_disable = 9;        // 画面尺寸
  bool like_disable = 10;             // 赞
  bool dislike_disable = 11;          // 踩
  bool coin_disable = 12;             // 投币
  bool elec_disable = 13;             // 充电
  bool share_disable = 14;            // 分享
  bool screen_shot_disable = 15;      // 截图
  bool lock_screen_disable = 16;      // 锁定
  bool recommend_disable = 17;        // 相关推荐
  bool playback_speed_disable = 18;   // 播放速度
  bool definition_disable = 19;       // 清晰度
  bool selections_disable = 20;       // 选集
  bool next_disable = 21;             // 下一集
  bool edit_dm_disable = 22;          // 编辑弹幕
  bool small_window_disable = 23;     // 小窗
  bool shake_disable = 24;            // 震动
  bool outer_dm_disable = 25;         // 外层面板弹幕设置
  bool inner_dm_disable = 26;         // 三点内弹幕设置
  bool freya_enter_disable = 27;      // 一起看入口
  bool dolby_disable = 28;            // 杜比音效
  bool freya_full_disable = 29;       // 全屏一起看入口
  bool skip_oped_switch_disable = 30; // 跳过片头片尾
  bool record_screen_disable = 31;    // 录屏
  bool color_optimize_disable = 32;   // 色觉优化
  bool dubbing_disable = 33;          // 配音
}

// 云控扩展配置信息
message PlayAbilityExtConf {
  //
  bool allow_close_subtitle = 1;
  //
  FreyaConfig freya_config = 2;
  //
  CastTips cast_tips = 3;
}

// 播放配音信息
message PlayDubbingInfo {
  // 背景音频
  AudioMaterialProto background_audio = 1;
  // 角色音频列表
  repeated RoleAudioProto role_audio_list = 2;
  // 引导文本
  string guide_text = 3;
}

// 错误码
enum PlayErr {
  NoErr = 0;                   //
  WithMultiDeviceLoginErr = 1; // 管控类型的错误码
}


// 播放扩展信息
message PlayExtInfo {
  // 播放配音信息
  PlayDubbingInfo play_dubbing_info = 1;
}

//
message PlayList {
  //
  int32 season_id = 1;
  //
  string title = 2;
  //
  string cover = 3;
  //
  string link = 4;
  //
  BadgeInfo badge_info = 5;
}

// 其他业务信息
message PlayViewBusinessInfo {
  // 当前视频是否是预览
  bool is_preview = 1;
  // 用户是否承包过
  bool bp = 2;
  // drm使用
  string marlin_token = 3;
  // 倍速动效色值
  string playback_speed_color = 4;
  //
  ContinuePlayInfo continue_play_info = 5;
  // 跳过片头/片尾配置
  repeated ClipInfo clip_info = 6;
  //
  InlineType inline_type = 7;
  //
  int32 ep_whole_duration = 8;
  // 当前分辨率信息
  Dimension dimension = 9;
  //
  map<int32, QualityExtInfo> quality_ext_map = 10;
  //
  map<string, int32> exp_map = 11;
  // DRM技术类型
  DrmTechType drm_tech_type = 12;
  //
  int32 limit_action_type = 13;
  //
  bool is_drm = 14;
  //
  RecordInfo record_info = 15;
  //
  int32 vip_status = 16;
  //
  bool is_live_pre = 17;
  //
  EpisodeInfo episode_info = 18;
  //
  EpisodeAdvertisementInfo episode_advertisement_info = 19;
  //
  UserStatus user_status = 20;
}

// 播放页信息-响应
message PlayViewReply {
  // 视频流信息
  VideoInfo video_info = 1;
  // 播放控件用户自定义配置
  PlayAbilityConf play_conf = 2;
  // 业务需要的其他信息
  PlayViewBusinessInfo business = 3;
  // 事件
  Event event = 4;
  // 展示信息
  ViewInfo view_info = 5;
  // 自定义配置扩展信息
  PlayAbilityExtConf play_ext_conf = 6;
  // 播放扩展信息
  PlayExtInfo play_ext_info = 7;
}

// 播放页信息-请求
message PlayViewReq {
  // 剧集epid
  int64 epid = 1;
  // 视频cid
  int64 cid = 2;
  // 清晰度
  int64 qn = 3;
  // 视频流版本
  int32 fnver = 4;
  // 视频流格式
  int32 fnval = 5;
  // 下载模式
  // 0:播放 1:flv下载 2:dash下载
  uint32 download = 6;
  // 流url强制是用域名
  // 0:允许使用ip 1:使用http 2:使用https
  int32 force_host = 7;
  // 是否4K
  bool fourk = 8;
  // 当前页spm
  string spmid = 9;
  // 上一页spm
  string from_spmid = 10;
  // 青少年模式
  int32 teenagers_mode = 11;
  // 视频编码
  CodeType prefer_codec_type = 12;
  // 是否强制请求预览视频
  bool is_preview = 13;
  // 一起看房间id
  int64 room_id = 14;
  // 是否需要展示信息
  bool is_need_view_info = 15;
  // 场景控制
  SceneControl scene_control = 16;
  //
  InlineScene inline_scene = 17;
  //
  int64 material_no = 18;
  // DRM 安全等级
  int32 security_level = 19;
  //
  int64 season_id = 20;
  //
  DataControl data_control = 21;
}

// 弹窗信息
message PopWin {
  // 弹窗标题 老字段
  string title = 1;
  // 优惠券列表
  repeated Coupon coupon = 2;
  // 弹窗按钮列表
  repeated ButtonInfo button = 3;
  // 底部文案 老字段
  string bottom_text = 4;
  // 弹窗标题 新字段
  TextInfo pop_title = 5;
  // 弹窗副标题
  TextInfo subtitle = 6;
  // 底部描述 新字段
  ButtonInfo bottom_desc = 7;
  // 弹窗小图
  string cover = 8;
  // 弹窗类型
  string pop_type = 9;
}

// 广告组件: 竖屏时视频下部提示栏
message PromptBar {
  // 主标题, 如: "本片含大会员专享内容"
  TextInfo title = 1;
  // 副标题, 如: "成为大会员可免费看全部剧集"
  TextInfo sub_title = 2;
  // 副标题前面的icon
  string sub_title_icon = 3;
  // 背景图
  string bg_image = 4;
  // 背景渐变色
  GradientColor bg_gradient_color = 5;
  // 按钮
  repeated ButtonInfo button = 6;
  // 埋点上报信息
  Report report = 7;
  //
  string full_screen_ip_icon = 8;
  //
  GradientColor full_screen_bg_gradient_color = 9;
}

// 云控拓展视频画质信息
message QualityExtInfo {
  // 是否支持试看
  bool trial_support = 1;
}

// 备案信息
message RecordInfo {
  // 记录
  string record = 1;
  // 记录图标
  string record_icon = 2;
}

// 埋点上报信息
message Report {
  // 曝光事件
  string show_event_id = 1;
  // 点击事件
  string click_event_id = 2;
  // 埋点透传参数
  string extends = 3;
}

// 分段流条目
message ResponseUrl {
  // 分段序号
  uint32 order = 1;
  // 分段时长
  uint64 length = 2;
  // 分段大小
  uint64 size = 3;
  // 主线流
  string url = 4;
  // 备用流
  repeated string backup_url = 5;
  // md5
  string md5 = 6;
}

// 权限信息
message Rights {
  // 是否可以观看
  int32 can_watch = 1;
}

// 角色配音信息
message RoleAudioProto {
  // 角色ID
  int64 role_id = 1;
  // 角色名称
  string role_name = 2;
  // 角色头像
  string role_avatar = 3;
  // 音频素材列表
  repeated AudioMaterialProto audio_material_list = 4;
}

// 场景控制
message SceneControl {
  // 是否收藏播单
  bool fav_playlist = 1;
  // 是否小窗
  bool small_window = 2;
  // 是否画中画
  bool pip = 3;
  //
  bool was_he_inline = 4;
  //
  bool is_need_trial = 5;
}

// 方案
message Scheme {
  enum ActionType {
    UNKNOWN = 0;
    SHOW_TOAST = 1;
  }
  //
  ActionType action_type = 1;
  //
  string toast = 2;
}

// PGC SEASON 信息
message SeasonInfo {
  // PGC SEASON ID
  int32 season_id = 1;
  // PGC SEASON 类型
  int32 season_type = 2;
  // PGC SEASON 状态
  int32 season_status = 3;
  // 封面
  string cover = 4;
  // 标题
  string title = 5;
  // 权限信息
  Rights rights = 6;
  // 模式
  int32 mode = 7;
}

// DRM 安全等级
enum SecurityLevel {
  LEVEL_UNKNOWN = 0; //
  LEVEL_L1 = 1; //
  LEVEL_L2 = 2; //
  LEVEL_L3 = 3; //
}

// 分段视频流
message SegmentVideo {
  //分段视频流列表
  repeated ResponseUrl segment = 1;
}

// 震动
message Shake {
  // 文件地址
  string file = 1;
}

// 视频流信息
message Stream {
  // 元数据
  StreamInfo info = 1;
  // 流数据
  oneof content {
    // dash流
    DashVideo dash_video = 2;
    // 分段流
    SegmentVideo segment_video = 3;
  }
}

// 流媒体元数据
message StreamInfo {
  // 视频质量
  int32 quality = 1;
  // 视频格式
  string format = 2;
  // 描述信息
  string description = 3;
  // 错误码
  int32 err_code = 4;
  // 流限制信息
  StreamLimit limit = 5;
  // 是否需要VIP
  bool need_vip = 6;
  // 是否需要登录
  bool need_login = 7;
  // 是否完整
  bool intact = 8;
  // 权限信息
  int64 attribute = 10;
  // 新版描述信息
  string new_description = 11;
  // 显示描述信息
  string display_desc = 12;
  // 上标
  string superscript = 13;
  // 方案信息
  Scheme scheme = 14;
  // 是否支持DRM
  bool support_drm = 15;
  // 字幕信息
  string subtitle = 16;
}

// 清晰度不满足条件信息
message StreamLimit {
  // 标题
  string title = 1;
  // 跳转地址
  string uri = 2;
  // 提示信息
  string msg = 3;
}

// 任务参数信息
message TaskParam {
  // 任务类型
  string task_type = 1;
  // 活动ID
  int64 activity_id = 2;
  // 提示ID
  int64 tips_id = 3;
}

// 文案信息
message TextInfo {
  // 文案
  string text = 1;
  // 字体色值
  string text_color = 2;
  // 字体色值-夜间模式
  string text_color_night = 3;
}

// toast
message Toast {
  // toast文案 老字段
  string text = 1;
  // toast按钮
  ButtonInfo button = 2;
  // 显示样式类型
  int32 show_style_type = 3;
  // 图标
  string icon = 4;
  // toast文案 新字段
  TextInfo toast_text = 5;
  // 埋点上报信息
  Report report = 6;
  //
  map<string, string> order_report_params = 7;
}

// 用户状态信息
message UserStatus {
  // 是否支付
  bool pay_check = 1;
  // 是否承包
  bool sponsor = 2;
  // 观看进度
  WatchProgress watch_progress = 3;
  // 系列观看进度
  WatchProgress aid_watch_progress = 4;
}

// 视频url信息
message VideoInfo {
  // 视频清晰度
  uint32 quality = 1;
  // 视频格式
  string format = 2;
  // 视频时长
  uint64 timelength = 3;
  // 视频编码id
  uint32 video_codecid = 4;
  // 视频流
  repeated Stream stream_list = 5;
  // 伴音流
  repeated DashItem dash_audio = 6;
  // 杜比伴音流
  DolbyItem dolby = 7;
}

// 展示信息
message ViewInfo {
  // 弹窗
  Dialog dialog = 1;
  // Toast
  Toast toast = 2;
  // 优惠券信息
  CouponInfo coupon_info = 3;
  // 未支付剧集ID列表
  repeated int64 demand_no_pay_epids = 4;
  // 结束页
  EndPage end_page = 5;
  // 扩展配置
  map<string, bool> exp_config = 6;
  // 弹窗
  PopWin pop_win = 7;
  // 试看提示栏
  PromptBar try_watch_prompt_bar = 8;
  // 支付提示信息
  PayTip pay_tip = 9;
  // 高清试看提示信息
  HighDefinitionTrialInfo high_definition_trial_info = 10;
  // 弹窗扩展
  map<string, Dialog> ext_dialog = 11;
  // 动画
  Animation animation = 12;
  // Toast扩展
  map<string, Toast> ext_toast = 13;
}

// 观看进度信息
message WatchProgress {
  // 上次观看的 EP ID
  int32 last_ep_id = 1;
  // 上次观看到的EP INDEX
  string last_ep_index = 2;
  // 上次观看的进度
  int64 progress = 3;
  // 上次观看的 CID
  int64 last_play_cid = 4;
  // 带时间的提示信息
  Toast toast = 5;
  // 不带时间的提示信息
  Toast toast_without_time = 6;
  // 上次观看的 AID
  int64 last_play_aid = 7;
}