use crate::models::{ Pendant, VipLabel };
use serde::{ Deserialize, Serialize };
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct ModuleAuthor {
pub avatar: Option<serde_json::Value>,
pub decorate: Option<serde_json::Value>,
pub face: String,
pub face_nft: bool,
pub following: Option<bool>,
pub jump_url: String,
pub label: String,
pub mid: i64,
pub name: String,
pub official: Option<AuthorOfficial>,
#[serde(rename = "official_verify")]
pub official_verify: Option<AuthorOfficial>,
pub pendant: Option<Pendant>,
pub pub_action: Option<String>,
pub pub_time: String,
pub pub_ts: i64,
pub views_text: String,
pub vip: Option<AuthorVip>,
#[serde(rename = "type")]
pub type_field: Option<String>,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct AuthorOfficial {
pub desc: String,
pub role: i64,
pub title: String,
#[serde(rename = "type")]
pub type_field: i64,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct AuthorVip {
pub due_date: i64,
pub label: VipLabel,
pub nickname_color: String,
pub status: i64,
pub r#type: i64,
pub role: Option<i64>,
pub theme_type: Option<i64>,
pub tv_due_date: Option<i64>,
pub tv_vip_pay_type: Option<i64>,
pub tv_vip_status: Option<i64>,
pub vip_pay_type: Option<i64>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleMore {
#[serde(rename = "three_point_items")]
pub three_point_items: Vec<ThreePointItem>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ThreePointItem {
pub label: String,
pub modal: Option<Modal>,
pub params: Option<Params>,
#[serde(rename = "type")]
pub type_field: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Modal {
pub cancel: String,
pub confirm: String,
pub content: String,
pub title: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Params {
#[serde(rename = "dyn_id_str")]
pub dyn_id_str: String,
#[serde(rename = "dyn_type")]
pub dyn_type: i64,
#[serde(rename = "rid_str")]
pub rid_str: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleStat {
pub coin: Option<StatData>,
pub comment: StatData,
pub favorite: Option<StatData>,
pub forward: StatData,
pub like: StatData,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct StatData {
pub count: i64,
pub forbidden: bool,
pub hidden: Option<bool>,
pub status: Option<bool>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleContent {
pub paragraphs: Vec<Paragraph>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Paragraph {
pub align: i64,
#[serde(rename = "para_type")]
pub para_type: i64,
pub text: Option<Text>,
pub pics: Option<ParagraphPics>,
pub line: Option<ParagraphLine>,
pub list: Option<ParagraphList>,
#[serde(rename = "link_card")]
pub link_card: Option<LinkCard>,
pub code: Option<ParagraphCode>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Text {
pub nodes: Vec<TextNode>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextNode {
#[serde(rename = "type")]
pub type_field: String,
pub word: Option<TextNodeWord>,
pub rich: Option<serde_json::Value>, pub formula: Option<TextNodeFormula>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextNodeWord {
#[serde(rename = "font_size")]
pub font_size: i64,
pub style: serde_json::Value,
pub words: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextNodeFormula {
#[serde(rename = "latex_content")]
pub latex_content: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParagraphLine {
pub pic: LinePic,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LinePic {
pub height: i64,
pub url: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParagraphList {
pub style: i64,
pub items: Vec<ListItem>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ListItem {
pub level: i64,
pub nodes: Vec<TextNode>,
pub order: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParagraphPics {
pub pics: Vec<PicItem>,
pub style: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PicItem {
pub height: i64,
#[serde(rename = "live_url")]
pub live_url: serde_json::Value,
pub size: Option<i64>,
pub url: String,
pub width: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LinkCard {
pub card: Card,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Card {
pub oid: String,
#[serde(rename = "type")]
pub type_field: String,
pub common: Option<serde_json::Value>,
pub goods: Option<serde_json::Value>,
#[serde(rename = "match")]
pub match_field: Option<MatchCard>,
pub vote: Option<serde_json::Value>,
pub ugc: Option<serde_json::Value>,
pub reserve: Option<serde_json::Value>,
#[serde(rename = "upower_lottery")]
pub upower_lottery: Option<UpowerLottery>,
pub opus: Option<OpusCard>,
pub music: Option<serde_json::Value>,
pub live: Option<serde_json::Value>,
#[serde(rename = "item_null")]
pub item_null: Option<ItemNullCard>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MatchCard {
#[serde(rename = "id_str")]
pub id_str: String,
#[serde(rename = "jump_url")]
pub jump_url: String,
#[serde(rename = "match_info")]
pub match_info: MatchInfo,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MatchInfo {
#[serde(rename = "center_bottom")]
pub center_bottom: String,
#[serde(rename = "center_top")]
pub center_top: Vec<String>,
#[serde(rename = "left_team")]
pub left_team: TeamInfo,
#[serde(rename = "right_team")]
pub right_team: TeamInfo,
pub status: i64,
#[serde(rename = "sub_title")]
pub sub_title: String,
pub title: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TeamInfo {
pub name: String,
pub pic: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpowerLottery {
pub button: UpowerLotteryButton,
pub desc: UpowerLotteryDesc,
pub hint: UpowerLotteryHint,
#[serde(rename = "jump_url")]
pub jump_url: String,
pub rid: i64,
pub state: i64,
pub title: String,
#[serde(rename = "up_mid")]
pub up_mid: i64,
#[serde(rename = "upower_action_state")]
pub upower_action_state: i64,
#[serde(rename = "upower_level")]
pub upower_level: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpowerLotteryButton {
pub check: UpowerLotteryButtonCheck,
pub status: i64,
#[serde(rename = "type")]
pub type_field: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpowerLotteryButtonCheck {
pub disable: i64,
#[serde(rename = "icon_url")]
pub icon_url: String,
pub text: String,
pub toast: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpowerLotteryDesc {
#[serde(rename = "jump_url")]
pub jump_url: String,
pub style: i64,
pub text: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpowerLotteryHint {
pub style: i64,
pub text: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpusCard {
pub author: OpusAuthor,
pub cover: String,
#[serde(rename = "jump_url")]
pub jump_url: String,
pub stat: OpusStat,
pub title: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpusAuthor {
pub name: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpusStat {
pub view: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ItemNullCard {
pub text: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParagraphCode {
pub content: String,
pub lang: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleTopic {
pub id: i64,
#[serde(rename = "jump_url")]
pub jump_url: String,
pub name: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleCollection {
pub count: String,
pub id: i64,
pub name: String,
pub title: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleExtend {
pub items: Vec<ExtendItem>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ExtendItem {
pub icon: Option<String>,
#[serde(rename = "icon_svg")]
pub icon_svg: serde_json::Value,
#[serde(rename = "jump_url")]
pub jump_url: String,
pub text: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModuleBottom {
#[serde(rename = "share_info")]
pub share_info: ShareInfo,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ShareInfo {
pub pic: String,
pub summary: String,
pub title: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Root {
pub additional: Option<serde_json::Value>,
pub desc: Option<serde_json::Value>,
pub major: Major,
pub topic: Option<serde_json::Value>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Major {
pub archive: Archive,
#[serde(rename = "type")]
pub type_field: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Archive {
pub aid: String,
pub badge: Badge,
pub bvid: String,
pub cover: String,
pub desc: String,
pub disable_preview: i64,
pub duration_text: String,
pub jump_url: String,
pub stat: Stat,
pub title: String,
#[serde(rename = "type")]
pub type_field: i64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Badge {
pub bg_color: String,
pub color: String,
pub icon_url: serde_json::Value,
pub text: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Stat {
pub danmaku: String,
pub play: String,
}