bangumi_api/module/episode/
model.rs

1use serde::{Deserialize, Serialize};
2use serde_repr::{Deserialize_repr, Serialize_repr};
3
4/// 表示剧集的详细信息结构体
5///
6/// 包含剧集的基本属性、播出信息、关联条目等完整数据,用于描述单个剧集的具体内容
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct Episode {
9    /// 剧集唯一标识符
10    pub id: u32,
11    /// 剧集类型(如普通剧集、SP、OP等)
12    pub r#type: EpisodeType,
13    /// 剧集原名(通常为日文或外文名称)
14    pub name: String,
15    /// 剧集中文名
16    pub name_cn: String,
17    /// 排序权重,用于确定剧集在列表中的展示顺序
18    pub sort: f64,
19    /// 集数编号(可能为小数,如特别篇可能标记为1.5)
20    pub ep: f64,
21    /// 播出日期(格式通常为YYYY-MM-DD,可能为空字符串表示未公开)
22    pub airdate: String,
23    /// 该剧集的评论数量
24    pub comment: u32,
25    /// 时长描述(如"24分钟",用于直观展示)
26    pub duration: String,
27    /// 剧集简介/描述
28    pub desc: String,
29    /// 所属光盘编号(用于多光盘发行的剧集)
30    pub disc: u32,
31    /// 关联的条目ID(该剧集所属的作品ID)
32    pub subject_id: u32,
33    /// 时长(秒数),用于精确的时长计算
34    pub duration_seconds: u32,
35}
36
37/// 剧集类型枚举
38///
39/// 用于区分不同类型的剧集内容,底层使用u8存储以节省空间
40#[derive(Debug, Clone, PartialEq, Serialize_repr, Deserialize_repr)]
41#[repr(u8)]
42pub enum EpisodeType {
43    /// 普通剧集(正片内容)
44    Normal = 0,
45    /// 特别篇(Special Episode,额外内容)
46    SP = 1,
47    /// 片头曲(Opening Theme,片头动画)
48    OP = 2,
49    /// 片尾曲(Ending Theme,片尾动画)
50    ED = 3,
51}