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}