syntax = "proto3";

package bilibili.app.viewunite.common;

option java_multiple_files = true;

import "bilibili/dagw/component/avatar/v1/avatar.proto";
import "bilibili/pagination/pagination.proto";
import "google/protobuf/any.proto";

//
message Activity {
  //
  int32 id = 1;
  //
  string title = 2;
  //
  string link = 3;
  //
  string cover = 4;
  //
  int32 type = 5;
  //
  string ab = 6;
  //
  string show_name = 7;
  //
  string picurl = 8;
  //
  string picurl_selected = 9;
  //
  string h5_link = 10;
  //
  string jump_mode = 11;
  //
  repeated Item items = 12;
}

//
message ActivityEntrance {
  //
  string activity_cover = 1;
  //
  string activity_title = 2;
  //
  string word_tag = 3;
  //
  string activity_subtitle = 4;
  //
  string activity_link = 5;
  //
  int32 activity_type = 6;
  //
  int32 reserve_id = 7;
  //
  int32 status = 8;
  //
  repeated User upper_list = 9;
  //
  map<string, string> report = 10;
}

//
message ActivityEntranceModule {
  //
  repeated ActivityEntrance activity_entrance = 1;
}

//
message ActivityReserve {
  //
  string title = 1;
  //
  StatInfo vt = 2;
  //
  StatInfo danmaku = 3;
  //
  ReserveButton button = 4;
}

//
message ActivityResource {
  //
  string mod_pool_name = 1;
  //
  string mod_resource_name = 2;
}

//
message ActivityTab {
  //
  int32 id = 1;
  //
  string title = 2;
  //
  int32 type = 3;
  //
  string show_name = 4;
  //
  string picurl = 5;
  //
  string picurl_selected = 6;
  //
  string h5_link = 7;
  //
  string link = 8;
  //
  int32 link_type = 9;
  //
  int64 biz_key = 10;
  //
  string desc = 11;
  //
  string act_ext = 12;
  //
  map<string, string> report = 13;
}

//
message AggEpCard {
  //
  string title = 1;
  //
  string cover = 2;
  //
  string icon = 3;
  //
  int32 num = 4;
  //
  string jump_url = 5;
}

//
message AggEps {
  //
  repeated AggEpCard agg_ep_cards = 1;
  //
  int32 place_index = 2;
}

//
message AttentionRecommend {}

//
enum AttentionRelationStatus {
  //
  ARS_NONE = 0;
  //
  ARS_N0RELATION = 1;
  //
  ARS_FOLLOWHIM = 2;
  //
  ARS_FOLLOWME = 3;
  //
  ARS_BUDDY = 4;
  //
  ARS_SPECIAL = 5;
  //
  ARS_CANCELBLOCK = 6;
}

//
message Audio {
  //
  map<int64, AudioInfo> audio_info = 1;
}

//
message AudioInfo {
  //
  string title = 1;
  //
  string cover_url = 2;
  //
  int64 song_id = 3;
  //
  int64 play_count = 4;
  //
  int64 reply_count = 5;
  //
  int64 upper_id = 6;
  //
  string entrance = 7;
  //
  int64 song_attr = 8;
}

//
message BadgeInfo {
  //
  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;
  //
  string img = 9;
  //
  int32 type = 10;
}

//
message Banner {
  //
  string title = 1;
  //
  repeated RelateItem relate_item = 2;
}

//
message BizFavParam {
  //
  int64 season_id = 1;
}

//
message BizReserveActivityParam {
  //
  int64 activity_id = 1;
  //
  string from = 2;
  //
  string type = 3;
  //
  int64 oid = 4;
  //
  int64 reserve_id = 5;
}

//
message Button {
  //
  string title = 1;
  //
  string left_strikethrough_text = 2;
  //
  string type = 3;
  //
  string link = 4;
  //
  BadgeInfo badge_info = 5;
  //
  string sub_title = 6;
}

//
message CardBasicInfo {
  //
  string title = 1;
  //
  string desc = 2;
  //
  string cover = 3;
  //
  string uri = 4;
  //
  string track_id = 5;
  //
  string unique_id = 6;
  //
  int64 from_source_type = 7;
  //
  string from_source_id = 8;
  //
  int64 material_id = 9;
  //
  string cover_gif = 10;
  //
  Owner author = 11;
  //
  int64 id = 12;
  //
  string from = 13;
  //
  string from_spmid_suffix = 14;
  //
  string report_flow_data = 15;
}

//
message CardStyle {
  //
  int32 id = 1;
  //
  string name = 2;
}

//
message Celebrity {
  //
  int32 id = 1;
  //
  string name = 2;
  //
  string role = 3;
  //
  string avatar = 4;
  //
  string short_desc = 5;
  //
  string desc = 6;
  //
  string character_avatar = 7;
  //
  string link = 8;
  //
  int64 mid = 9;
  //
  int32 is_follow = 10;
  //
  string occupation_name = 11;
  //
  int32 occupation_type = 12;
  //
  int32 relate_attr = 13;
  //
  string small_avatar = 14;
  //
  map<string, string> report = 15;
}

//
message CharacterGroup {
  //
  string title = 1;
  //
  repeated Celebrity characters = 2;
}

//
message Characters {
  //
  repeated CharacterGroup groups = 1;
}

//
message CoinExtend {
  //
  string coin_app_zip_icon = 1;
  //
  string coin_app_icon_1 = 2;
  //
  string coin_app_icon_2 = 3;
  //
  string coin_app_icon_3 = 4;
  //
  string coin_app_icon_4 = 5;
}

//
message CombinationEp {
  //
  int32 id = 1;
  //
  int32 section_id = 2;
  //
  string title = 3;
  //
  int32 can_ord_desc = 4;
  //
  string more = 5;
  //
  repeated int32 episode_ids = 6;
  //
  repeated ViewEpisode episodes = 7;
  //
  string split_text = 8;
  //
  Style module_style = 9;
  //
  repeated SerialSeason serial_season = 10;
  //
  SectionData section_data = 11;
}

//
message Covenanter {}

//
message DeliveryData {
  //
  string title = 1;
  //
  Style module_style = 2;
  //
  string more = 3;
  //
  oneof data {
    //
    Activity activity = 4;
    //
    Characters characters = 5;
    //
    TheatreHotTopic theatre_hot_topic = 6;
    //
    AggEps agg_eps = 7;
  }
  //
  int32 id = 8;
  //
  map<string, string> report = 9;
}

//
message Desc {
  //
  string info = 1;
  //
  string title = 2;
}

enum DescType {
  //
  DescTypeUnknown = 0;
  //
  DescTypeText = 1;
  //
  DescTypeAt = 2;
}

//
message DescV2 {
  //
  string text = 1;
  //
  int32 type = 2;
  //
  string uri = 3;
  //
  int64 rid = 4;
}

//
message Dimension {
  //
  int64 width = 1;
  //
  int64 height = 2;
  //
  int64 rotate = 3;
}

//
message DislikeReasons {
  //
  int64 id = 1;
  //
  int64 mid = 2;
  //
  int32 rid = 3;
  //
  int64 tag_id = 4;
  //
  string name = 5;
}

//
message FollowLayer {
  //
  Staff staff = 1;
  //
  Desc desc = 2;
  //
  map<string, string> report = 3;
}

//
message Headline {
  //
  Label label = 1;
  //
  string content = 2;
}

//
message HistoryNode {
  //
  int64 node_id = 1;
  //
  string title = 2;
  //
  int64 cid = 3;
}

// 荣誉 Banner
message Honor {
  //
  string icon = 1;
  //
  string icon_night = 2;
  //
  string text = 3;
  //
  string text_extra = 4;
  //
  string text_color = 5;
  //
  string text_color_night = 6;
  //
  string bg_color = 7;
  //
  string bg_color_night = 8;
  //
  string url = 9;
  //
  string url_text = 10;
  //
  HonorType type = 11;
  //
  HonorJumpType honor_jump_type = 12;
  //
  map<string, string> report = 13;
}

// 荣誉 Banner 跳转类型
enum HonorJumpType {
  //
  HONOR_JUMP_TYPE_UNKNOWN = 0;
  //
  HONOR_OPEN_URL = 1;
  //
  HONOR_HALF_SCREEN = 2;
}

// 荣誉类型
enum HonorType {
  //
  HONOR_NONE = 0;
  //
  PLAYLET = 1;
  // 视频存在争议
  ARGUE = 2;
  //
  NOTICE = 3;
  //
  GUIDANCE = 4;
  // 哔哩哔哩榜
  HONOR_BILI_RANK = 5;
  // 周榜
  HONOR_WEEKLY_RANK = 6;
  // 日榜
  HONOR_DAILY_RANK = 7;
  //
  HONOR_CHANNEL = 8;
  // 音乐榜?
  HONOR_MUSIC = 9;
  //
  HONOR_REPLY = 10;
}

//
message IconFont {
  //
  string name = 1;
  //
  string text = 2;
}

//
message Interaction {
  //
  int64 ep_id = 1;
  //
  HistoryNode history_node = 2;
  //
  int64 graph_version = 3;
  //
  string msg = 4;
  //
  bool is_interaction = 5;
}

//
message Item {
  //
  string link = 1;
  //
  string cover = 2;
}

//
message KingPos {
  //
  bool disable = 1;
  //
  string icon = 2;
  //
  KingPositionType type = 3;
  //
  string disable_toast = 4;
  //
  string checked_post = 5;
  //
  oneof extend {
    //
    LikeExtend like = 6;
    //
    CoinExtend coin = 7;
  }
}

//
message KingPosition {
  //
  repeated KingPos king_pos = 1;
  //
  repeated KingPos extenf = 2;
}

//
enum KingPositionType {
  //
  KING_POS_UNSPECIFIED = 0;
  //
  LIKE = 1;
  //
  DISLIKE = 2;
  //
  COIN = 3;
  //
  FAV = 4;
  //
  SHARE = 5;
  //
  CACHE = 6;
  //
  DANMAKU = 7;
}

//
message Label {
  //
  int32 type = 1;
  //
  string uri = 2;
  //
  string icon = 3;
  //
  string icon_night = 4;
  //
  int64 icon_width = 5;
  //
  int64 icon_height = 6;
  //
  string lottie = 7;
  //
  string lottie_night = 8;
}

//
message LikeComment {
  //
  string reply = 1;
  //
  string title = 2;
}

//
message LikeExtend {
  //
  UpLikeImg triple_like = 1;
  //
  string like_animation = 2;
  //
  PlayerAnimation player_animation = 3;
  //
  ActivityResource resource = 4;
}

//
message Live {
  //
  int64 mid = 1;
  //
  int64 room_id = 2;
  //
  string uri = 3;
  //
  string endpage_uri = 4;
}

// 直播预约信息
message LiveOrder {
  //
  int64 sid = 1;
  //
  string text = 2;
  //
  int64 live_plan_start_time = 3;
  //
  bool is_follow = 4;
  //
  int64 follow_count = 5;
}

//
message Mine {
  //
  double amount = 1;
  //
  int32 rank = 2;
  //
  string msg = 3;
}

//
message Module {
  //
  ModuleType type = 1;
  //
  oneof data {
    //
    OgvIntroduction ogv_introduction = 2;
    //
    UgcIntroduction ugc_introduction = 3;
    //
    KingPosition king_position = 4;
    //
    Headline head_line = 5;
    //
    OgvTitle ogv_title = 6;
    //
    Honor honor = 7;
    //
    UserList list = 8;
    //
    Staffs staffs = 9;
    //
    ActivityReserve activity_reserve = 10;
    //
    LiveOrder live_order = 11;
    //
    SectionData section_data = 12;
    //
    DeliveryData delivery_data = 13;
    //
    FollowLayer follow_layer = 14;
    //
    OgvSeasons ogv_seasons = 15;
    //
    UgcSeasons ugc_season = 16;
    //
    OgvLiveReserve ogv_live_reserve = 17;
    //
    CombinationEp combination_ep = 18;
    //
    Sponsor sponsor = 19;
    //
    ActivityEntranceModule activity_entrance_module = 20;
    //
    SerialSeason serial_season = 21;
    //
    Relates relates = 22;
    //
    Banner banner = 23;
    //
    Audio audio = 24;
    //
    LikeComment like_comment = 25;
    //
    AttentionRecommend attention_recommend = 26;
    //
    Covenanter covenanter = 27;
  }
}

enum ModuleType {
  //
  UNKNOWN = 0;
  //
  OGV_INTRODUCTION = 1;
  //
  OGV_TITLE = 2;
  //
  UGC_HEADLINE = 3;
  //
  UGC_INTRODUCTION = 4;
  //
  KING_POSITION = 5;
  //
  MASTER_USER_LIST = 6;
  //
  STAFFS = 7;
  //
  HONOR = 8;
  //
  OWNER = 9;
  //
  PAGE = 10;
  //
  ACTIVITY_RESERVE = 11;
  //
  LIVE_ORDER = 12;
  //
  POSITIVE = 13;
  //
  SECTION = 14;
  //
  RELATE = 15;
  //
  PUGV = 16;
  //
  COLLECTION_CARD = 17;
  //
  ACTIVITY = 18;
  //
  CHARACTER = 19;
  //
  FOLLOW_LAYER = 20;
  //
  OGV_SEASONS = 21;
  //
  UGC_SEASON = 22;
  //
  OGV_LIVE_RESERVE = 23;
  //
  COMBINATION_EPISODE = 24;
  //
  SPONSOR = 25;
  //
  ACTIVITY_ENTRANCE = 26;
  //
  THEATRE_HOT_TOPIC = 27;
  //
  RELATED_RECOMMEND = 28;
  //
  PAY_BAR = 29;
  //
  BANNER = 30;
  //
  AUDIO = 31;
  //
  AGG_CARD = 32;
  //
  SINGLE_EP = 33;
  //
  LIKE_COMMENT = 34;
  //
  ATTENTION_RECOMMEND = 35;
  //
  COVENANTER = 36;
}

//
message MultiViewEp {
  //
  int64 ep_id = 1;
}

//
message NewEp {
  //
  int32 id = 1;
  //
  string title = 2;
  //
  string desc = 3;
  //
  int32 is_new = 4;
  //
  string more = 5;
  //
  string cover = 6;
  //
  string index_show = 7;
}

//
enum OccupationType {
  //
  STAFF = 0;
  //
  CAST = 1;
}

//
message OfficialVerify {
  //
  int32 type = 1;
  //
  string desc = 2;
}

//
message OgvIntroduction {
  //
  string followers = 1;
  //
  string score = 2;
  //
  StatInfo play_data = 3;
}

//
message OgvLiveReserve {
  //
  int64 reserve_id = 1;
  //
  string title = 2;
  //
  string icon = 3;
  //
  string night_icon = 4;
  //
  string click_button = 5;
  //
  string link = 6;
  //
  int32 follow_video_is_reserve_live = 7;
  //
  string bg_color = 8;
  //
  string night_bg_color = 9;
  //
  string text_color = 10;
  //
  string night_text_color = 11;
  //
  string bt_bg_color = 12;
  //
  string bt_frame_color = 13;
  //
  string night_bt_bg_color = 14;
  //
  string night_bt_frame_color = 15;
  //
  int32 active_type = 16;
  //
  int32 reserve_status = 17;
  //
  string bt_text_color = 18;
  //
  string night_bt_text_color = 19;
  //
  map<string, string> report = 20;
}

//
message OgvSeasons {
  //
  string title = 1;
  //
  repeated SerialSeason serial_season = 2;
  //
  SerialSeasonCoverStyle style = 3;
}

//
message OgvTitle {
  //
  string title = 1;
  //
  BadgeInfo badge_info = 2;
  //
  int32 is_show_btn_animation = 3;
  //
  int32 follow_video_is_reserve_live = 4;
  //
  int64 reserve_id = 5;
  //
  TitleDeliveryButton title_delivery_button = 6;
}

//
message Owner {
  bilibili.dagw.component.avatar.v1.AvatarItem avatar = 1;
  //
  string url = 2;
  //
  string title = 3;
  //
  string fans = 4;
  //
  string arc_count = 5;
  //
  int32 attention = 6;
  //
  int32 attention_relation = 7;
  //
  string pub_location = 8;
  //
  Vip vip = 9;
  //
  string title_url = 10;
  //
  string face = 11;
  //
  int64 mid = 12;
  //
  OfficialVerify official_verify = 13;
  //
  Live live = 14;
  //
  int64 fans_num = 15;
  //
  repeated int64 assists = 16;
}

//
message Page {
  //
  int64 cid = 1;
  //
  string part = 2;
  //
  int64 duration = 3;
  //
  string desc = 4;
  //
  Dimension dimension = 5;
  //
  string dl_title = 6;
  //
  string dl_subtitle = 7;
}

//
message Pendant {
  //
  int32 pid = 1;
  //
  string name = 2;
  //
  string image = 3;
}

//
message PlayerAnimation {
  //
  string player_icon = 1;
  //
  string player_triple_icon = 2;
}

//
message PointActivity {
  //
  string tip = 1;
  //
  string content = 2;
  //
  string link = 3;
}

//
message PowerIconStyle {
  //
  string icon_url = 1;
  //
  string icon_night_url = 2;
  //
  int64 icon_width = 3;
  //
  int64 icon_height = 4;
}

//
message Rank {
  //
  string icon = 1;
  //
  string icon_night = 2;
  //
  string text = 3;
}

//
message RankInfo {
  //
  string icon_url_night = 1;
  //
  string icon_url_day = 2;
  //
  string bkg_night_color = 3;
  //
  string bkg_day_color = 4;
  //
  string font_night_color = 5;
  //
  string font_day_color = 6;
  //
  string rank_content = 7;
  //
  string rank_link = 8;
}

//
message Rating {
  //
  string score = 1;
  //
  int32 count = 2;
}

// 视频详情下方推荐卡子类型: 普通视频
message RelateAVCard {
  //
  int64 duration = 1;
  //
  int64 cid = 2;
  //
  Dimension dimension = 3;
  //
  Stat stat = 4;
  //
  string jump_url = 5;
  //
  bool show_up_name = 6;
  //
  BadgeInfo rcmd_reason = 7;
}

// 视频详情下方推荐卡子类型: 番剧(小卡?)
message RelateBangumiAvCard {
  //
  BadgeInfo badge = 1;
  //
  Stat stat = 2;
  //
  Rating rating = 3;
}

// 视频详情下方推荐卡子类型: 番剧(大卡?)
message RelateBangumiCard {
  //
  int32 season_id = 1;
  //
  int32 season_type = 2;
  //
  NewEp new_ep = 3;
  //
  Stat stat = 4;
  //
  Rating rating = 5;
  //
  string rcmd_reason = 6;
  //
  BadgeInfo badge_info = 7;
  //
  string goto_type = 8;
  //
  map<string, string> report = 9;
}

// 视频详情下方推荐卡子类型: 番剧集?
message RelateBangumiResourceCard {
  //
  int32 type = 1;
  //
  string scover = 2;
  //
  int32 re_type = 3;
  //
  string re_value = 4;
  //
  string corner = 5;
  //
  int32 card = 6;
  //
  string siz = 7;
  //
  int32 position = 8;
  //
  string rcmd_reason = 9;
  //
  string label = 10;
  //
  map<string, string> report = 11;
  //
  string goto_type = 12;
}

// 视频详情下方推荐卡子类型: UGC 番剧?
message RelateBangumiUgcCard {
  //
  BadgeInfo badge = 1;
  //
  Stat stat = 2;
  //
  Rating rating = 3;
}

// 视频详情下方推荐卡
message RelateCard {
  //
  RelateCardType relate_card_type = 1;
  //
  oneof card {
    //
    RelateAVCard av = 2;
    //
    RelateBangumiCard bangumi = 3;
    //
    RelateBangumiResourceCard resource = 4;
    //
    RelateGameCard game = 5;
    //
    RelateCMCard cm = 6;
    //
    RelateLiveCard live = 7;
    //
    RelateBangumiAvCard bangumi_av = 8;
    //
    RelatedAICard ai_card = 9;
    //
    RelateBangumiUgcCard bangumi_ugc = 13;
    //
    RelateSpecial special = 14;
  }
  //
  RelateThreePoint three_point = 10;
  //
  google.protobuf.Any cm_stock = 11;
  //
  CardBasicInfo basic_info = 12;
}

// 视频详情下方推荐卡子类型
enum RelateCardType {
  //
  CARD_TYPE_UNKNOWN = 0;
  //
  AV = 1;
  //
  BANGUMI = 2;
  //
  RESOURCE = 3;
  //
  GAME = 4;
  //
  CM = 5;
  //
  LIVE = 6;
  //
  AI_RECOMMEND = 7;
  //
  BANGUMI_AV = 8;
  //
  BANGUMI_UGC = 9;
  //
  SPECIAL = 10;
}

// 视频详情下方推荐卡子类型: 广告推广
message RelateCMCard {
  //
  int64 aid = 1;
  //
  google.protobuf.Any source_content = 2;
  //
  int64 duration = 3;
  //
  Stat stat = 4;
}

// 视频详情下方推荐配置
message RelateConfig {
  //
  int64 valid_show_m = 1;
  //
  int64 valid_show_n = 2;
  //
  bilibili.pagination.Pagination pagination = 3;
  //
  bool can_load_more = 4;
}

// 视频详情下方推荐卡子类型: AI 推荐?
message RelatedAICard {
  //
  int64 aid = 1;
  //
  int64 duration = 2;
  //
  Staff up_info = 3;
  //
  Stat stat = 4;
  //
  map<string, string> report = 5;
  //
  string goto_type = 6;
}

// 视频详情下方推荐卡子类型: 点击不喜欢后占位卡片
message RelateDislike {
  //
  string title = 1;
  //
  string sub_title = 2;
  //
  string closed_sub_title = 3;
  //
  string paste_text = 4;
  //
  string closed_paste_text = 5;
  //
  repeated DislikeReasons dislike_reason = 6;
  //
  string toast = 7;
  //
  string closed_toast = 8;
}

// 视频详情下方推荐卡子类型: 游戏推广
message RelateGameCard {
  //
  int64 reserve_status = 1;
  //
  string reserve_status_text = 2;
  //
  string reserve = 3;
  //
  float rating = 4;
  //
  string tag_name = 5;
  //
  RankInfo rank_info = 6;
  //
  Button pack_info = 7;
  //
  Button notice = 8;
  //
  PowerIconStyle power_icon_style = 9;
  //
  string game_rcmd_reason = 10;
  //
  WikiInfo wiki_info = 11;
  //
  BadgeInfo badge = 12;
}

//
message RelateItem {
  //
  string url = 1;
  //
  string cover = 2;
  //
  bool use_default_browser = 3;
}

// 视频详情下方推荐卡子类型: 直播
message RelateLiveCard {
  //
  int64 icon_type = 1;
  //
  string area_name = 2;
  //
  int64 watched_show = 3;
  //
  int64 live_status = 4;
}

// 视频下方推荐区
message Relates {
  //
  repeated RelateCard cards = 1;
  //
  RelateConfig config = 2;
}

// 视频详情下方推荐卡子类型: 其他特殊
message RelateSpecial {
  //
  BadgeInfo badge = 1;
  //
  BadgeInfo rcmd_reason = 2;
}

// 视频详情下方推荐卡右上角三点的内容
message RelateThreePoint {
  //
  RelateDislike dislike = 1;
  //
  RelateDislike feedback = 2;
  //
  bool watch_later = 3;
  //
  string dislike_report_data = 4;
}

//
enum ReserveBizType {
  //
  BizTypeNone = 0;
  //
  BizTypeReserveActivity = 1;
  //
  BizTypeFavSeason = 2;
}

//
message ReserveButton {
  //
  bool status = 1;
  //
  string text = 3;
  //
  string selected_text = 4;
  //
  ReserveBizType order_type = 7;
  //
  oneof order_param {
    //
    BizReserveActivityParam reserve = 8;
    //
    BizFavParam fav = 9;
  }
}

//
message Rights {
  //
  int32 allow_download = 1;
  //
  int32 allow_review = 2;
  //
  int32 can_watch = 3;
  //
  string resource = 4;
  //
  int32 allow_dm = 5;
  //
  int32 allow_demand = 6;
  // 区域限制
  int32 area_limit = 7;
}

//
message SeasonHead {
  //
  string title = 1;
  //
  string intro = 2;
  //
  StatInfo vt = 3;
  //
  StatInfo danmaku = 4;
}

//
message SeasonShow {
  //
  string button_text = 1;
  //
  string join_text = 2;
  //
  string rule_text = 3;
  //
  string checkin_text = 4;
  //
  string checkin_prompt = 5;
}

enum SeasonType {
  //
  Unknown = 0;
  //
  Base = 1;
  //
  Good = 2;
}

//
message SectionData {
  //
  int32 id = 1;
  //
  int32 section_id = 2;
  //
  string title = 3;
  //
  int32 can_ord_desc = 4;
  //
  string more = 5;
  //
  repeated int32 episode_ids = 6;
  //
  repeated ViewEpisode episodes = 7;
  //
  string split_text = 8;
  //
  Style module_style = 9;
  //
  string more_bottom_desc = 10;
  //
  repeated SerialSeason seasons = 11;
  //
  Button more_left = 12;
  //
  int32 type = 13;
  //
  map<string, string> report = 14;
}

//
message SerialSeason {
  //
  int32 season_id = 1;
  //
  string title = 2;
  //
  string season_title = 3;
  //
  int32 is_new = 4;
  //
  string cover = 5;
  //
  string badge = 6;
  //
  int32 badge_type = 7;
  //
  BadgeInfo badge_info = 8;
  //
  string link = 9;
  //
  string resource = 10;
  //
  NewEp new_ep = 11;
}

enum SerialSeasonCoverStyle {
  //
  TITLE = 0;
  //
  PICTURE = 1;
}

//
message SkipRange {
  //
  int32 start = 1;
  //
  int32 end = 2;
}

//
message Sponsor {
  //
  int64 total = 1;
  //
  int64 week = 2;
  //
  repeated SponsorRank rank_list = 3;
  //
  Mine mine = 4;
  //
  PointActivity point_activity = 5;
  //
  repeated Pendant pendants = 6;
  //
  repeated Threshold threshold = 7;
}

//
message SponsorRank {
  //
  int64 uid = 1;
  //
  string msg = 2;
  //
  string uname = 3;
  //
  string face = 4;
  //
  Vip vip = 5;
}

//
message Staff {
  //
  int64 mid = 1;
  //
  int32 attention = 2;
  //
  string title = 3;
  //
  string name = 4;
  //
  string face = 5;
  //
  OfficialVerify official = 6;
  //
  Vip vip = 7;
  //
  int32 label_style = 8;
  //
  string fans = 9;
}

//
message Staffs {
  //
  repeated Staff staff = 1;
  //
  string title = 2;
}

//
message Stat {
  // 视频观看时长
  StatInfo vt = 1;
  // 弹幕
  StatInfo danmaku = 2;
  // 回复数
  int64 reply = 3;
  // 收藏数
  int64 fav = 4;
  // 硬币数
  int64 coin = 5;
  // 分享数
  int64 share = 6;
  // 点赞数
  int64 like = 7;
  // 关注数
  int64 follow = 8;
}

//
message StatInfo {
  //
  int64 value = 1;
  //
  string text = 2;
  //
  string pure_text = 3;
  //
  string icon = 4;
}

//
message Style {
  //
  int32 line = 1;
  //
  int32 hidden = 2;
  //
  repeated string show_pages = 3;
}

//
message Tag {
  //
  int64 tag_id = 1;
  //
  string name = 2;
  //
  string uri = 3;
  //
  string tag_type = 4;
}

//
message TheatreHotTopic {
  //
  int64 theatre_id = 1;
  //
  int64 theatre_set_id = 2;
  //
  string theatre_title = 3;
  //
  string background_image_url = 4;
  //
  string theatre_url = 5;
  //
  int64 hot_topic_id = 6;
  // Original one is hottopicsetid, here renamed
  int64 hot_topic_set_id = 7;
  // Original one is hottopictitle, here renamed
  string hot_topic_title = 8;
  //
  string hot_topic_url = 9;
  //
  int32 is_subscribe = 10;
  //
  map<string, string> report = 11;
}

//
message Threshold {
  //
  int32 bp = 1;
  //
  int32 days = 2;
  //
  string days_text = 3;
}

//
message TitleDeliveryButton {
  //
  string icon = 1;
  //
  string title = 2;
  //
  string link = 3;
  //
  map<string, string> report = 4;
}

//
message UgcEpisode {
  //
  int64 id = 1;
  //
  int64 aid = 2;
  //
  int64 cid = 3;
  //
  string title = 4;
  //
  string cover = 5;
  //
  string cover_right_text = 6;
  //
  Page page = 7;
  //
  StatInfo vt = 8;
  //
  StatInfo danmaku = 9;
}

//
message UgcIntroduction {
  //
  repeated Tag tags = 1;
  //
  Rating rating = 2;
  //
  Rank rank = 3;
  //
  repeated ViewMaterial bgm = 4;
  //
  repeated ViewMaterial sticker = 5;
  //
  repeated ViewMaterial video_source = 6;
  //
  int64 pubdate = 7;
  //
  repeated DescV2 desc = 8;
}

//
message UgcSeasonActivity {
  //
  int32 type = 1;
  //
  int64 oid = 2;
  //
  int64 activity_id = 3;
  //
  string title = 4;
  //
  string intro = 5;
  //
  int32 day_count = 6;
  //
  int32 user_count = 7;
  //
  int64 join_deadline = 8;
  //
  int64 activity_deadline = 9;
  //
  int32 checkin_view_time = 10;
  //
  bool new_activity = 11;
  //
  UserActivity user_activity = 12;
  //
  SeasonShow season_show = 13;
}

//
message UgcSeasons {
  //
  int64 id = 1;
  //
  string title = 2;
  //
  string cover = 3;
  //
  string supernatant_title = 4;
  //
  repeated UgcSection section = 5;
  //
  string union_title = 6;
  //
  SeasonHead head = 7;
  //
  int64 ep_count = 8;
  //
  int32 season_type = 9;
  //
  UgcSeasonActivity activity = 10;
  //
  repeated string season_ability = 11;
  //
  string season_title = 12;
}

//
message UgcSection {
  //
  int64 id = 1;
  //
  string title = 2;
  //
  int64 type = 3;
  //
  repeated UgcEpisode episodes = 4;
}

//
message UpLikeImg {
  //
  string pre_img = 1;
  //
  string suc_img = 2;
  //
  string content = 3;
  //
  int64 type = 4;
}

//
message User {
  //
  int64 mid = 1;
  //
  string name = 2;
  //
  string face = 3;
  //
  int64 follower = 4;
}

//
message UserActivity {
  //
  int32 user_state = 1;
  //
  int64 last_checkin_date = 2;
  //
  int32 checkin_today = 3;
  //
  int32 user_day_count = 4;
  //
  int32 user_view_time = 5;
  //
  string portrait = 6;
}

//
message UserList {
  //
  repeated User list = 1;
  //
  string title = 2;
}

//
message UserStatus {
  //
  int32 show = 1;
  //
  int32 follow = 2;
}

//
message ViewEpisode {
  //
  int64 ep_id = 1;
  //
  string badge = 2;
  //
  int32 badge_type = 3;
  //
  BadgeInfo badge_info = 4;
  //
  int32 duration = 5;
  //
  int32 status = 6;
  //
  string cover = 7;
  //
  int64 aid = 8;
  //
  string title = 9;
  //
  string movie_title = 10;
  //
  string subtitle = 11;
  //
  string long_title = 12;
  //
  string toast_title = 13;
  //
  int64 cid = 14;
  //
  string from = 15;
  //
  string share_url = 16;
  //
  string share_copy = 17;
  //
  string short_link = 18;
  //
  string vid = 19;
  //
  string release_date = 20;
  //
  Dimension dimension = 21;
  //
  Rights rights = 22;
  //
  Interaction interaction = 23;
  //
  string bvid = 24;
  //
  int32 archive_attr = 25;
  //
  string link = 26;
  //
  string link_type = 27;
  //
  string bmid = 28;
  //
  int64 pub_time = 29;
  //
  int32 pv = 30;
  //
  int32 ep_index = 31;
  //
  int32 section_index = 32;
  //
  repeated Staff up_infos = 33;
  //
  Staff up_info = 34;
  //
  string dialog_type = 35;
  //
  string toast_type = 36;
  //
  repeated MultiViewEp multi_view_eps = 37;
  //
  bool is_sub_view = 38;
  //
  bool is_view_hide = 39;
  //
  string jump_link = 40;
  //
  Stat stat_for_unity = 41;
  //
  map<string, string> report = 42;
}

//
message ViewMaterial {
  //
  int64 oid = 1;
  //
  int64 mid = 2;
  //
  string title = 3;
  //
  string author = 4;
  //
  string jump_url = 5;
}

//
message Vip {
  //
  int32 type = 1;
  //
  int32 vip_status = 2;
  //
  int32 theme_type = 3;
  //
  VipLabel label = 4;
  //
  int32 is_vip = 5;
}

//
message VipLabel {
  //
  string path = 1;
  //
  string text = 2;
  //
  string label_theme = 3;
}

//
message WikiInfo {
  //
  string wiki_label = 1;
  //
  string wiki_url = 2;
}