Skip to main content

utils/lyrics/
model.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4pub struct LyricChunk {
5    /// A timed lyric chunk. Most providers use whole words; Apple Music can
6    /// return smaller syllable-level chunks.
7    pub start_time: f64,
8    pub text: String,
9}
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct LyricLine {
13    pub start_time: f64,
14    #[serde(default)]
15    pub end_time: Option<f64>,
16    pub text: String,
17    #[serde(default)]
18    pub chunks: Vec<LyricChunk>,
19    #[serde(default)]
20    pub parent_line_index: Option<usize>,
21    #[serde(default)]
22    pub background: bool,
23    #[serde(default)]
24    pub opposite_turn: bool,
25}
26
27#[derive(Debug, Clone, PartialEq)]
28pub enum Lyrics {
29    Synced(Vec<LyricLine>),
30    Plain(String),
31}