Skip to content

API Enums

ChouChiu edited this page Sep 23, 2026 · 1 revision

枚举类型

四个核心枚举定义在 crates/lyrics-core/src/models/lyrics_types.rs,由门面 crate 顶层导出(use lyrics_helper::{LyricsRawTypes, LyricsTypes, SyncTypes, LyricsAlignment};)。

前三个枚举采用 #[repr(u8)] 并显式分配判别值,序列化具备跨版本二进制稳定性。所有枚举均实现 Default、Copy、Eq、Hash 以及 serde Serialize / Deserialize。

LyricsRawTypes

描述输入文本的形态特征。作为 get_lyrics_types() 的返回值,以及 parse() 的指定格式参数。

变体 判别值 说明
Unknown 0 无法识别(Default)
LyricifySyllable 1 Lyricify 逐字文本
LyricifyLines 2 Lyricify 逐行文本
Lrc 3 标准 LRC 文本
Qrc 4 QQ 音乐逐字正文
Krc 5 酷狗逐字正文
Yrc 6 网易云逐字正文
Ttml 7 TTML XML 格式(Apple Music 逐字)
Spotify 8 Spotify Color Lyrics JSON 载荷
Musixmatch 9 Musixmatch API 响应 JSON
QrcFull 10 QRC XML 信封:<QrcInfos>...<Lyric_1 LyricContent="..."/>
YrcFull 11 网易云接口返回的 JSON 信封:{"yrc":{"lyric":"..."}}
AppleJson 12 Apple Music API 返回的 JSON 信封:{"data":[{"attributes":{"ttml":"..."}}]}

Important

三个信封格式(QrcFull、YrcFull、AppleJson)仅能被类型检测识别,无法直接由 parse() 解析(返回 None)。调用方必须先从信封结构中提取内嵌歌词。各平台的 Provider 已完成这一展开步骤。

LyricsTypes

描述输出目标格式或已解析 LyricsData 的格式归属(FileInfo::lyrics_type)。作为 generate_string() 的目标参数。

变体 判别值 支持生成 说明
Unknown 0 -- 未知(Default)
LyricifySyllable 1 ✓ 导出 Lyricify 逐音节格式
LyricifyLines 2 ✓ 导出 Lyricify 逐行格式
Lrc 3 ✓ 导出标准 LRC 逐行格式
Qrc 4 ✓ 导出 QQ 音乐逐字格式
Krc 5 ✓ 导出酷狗逐字格式
Yrc 6 ✓ 导出网易云逐字格式
Ttml 7 -- 仅作来源标记,无生成器
Spotify 8 -- 仅作来源标记,无生成器
Musixmatch 9 -- 仅作来源标记,无生成器

LyricsRawTypes 可通过 .lyrics_type() 映射为对应的 LyricsTypes:

use lyrics_helper::{LyricsRawTypes, LyricsTypes};

assert_eq!(LyricsRawTypes::QrcFull.lyrics_type(), LyricsTypes::Qrc);
assert_eq!(LyricsRawTypes::YrcFull.lyrics_type(), LyricsTypes::Yrc);
assert_eq!(LyricsRawTypes::AppleJson.lyrics_type(), LyricsTypes::Ttml);

SyncTypes

描述歌词文档的时间同步粒度,记录于 FileInfo::sync_types:

变体 判别值 含义
Unknown 0 未能判定(Default,如无任何时间戳的纯文本)
SyllableSynced 1 逐字同步:每个字/音节均具备时间戳
LineSynced 2 逐行同步:仅每行整体具备时间戳
MixedSynced 3 混合同步:部分行为逐字、部分行为逐行
Unsynced 4 完全无同步时间的文本

LyricsAlignment

标记歌词行在对唱或排版时的对齐归属,存在于每个 LineInfo 变体上:

变体 含义
Unspecified 未指定对齐(Default)
Left 主唱 / 左侧声部
Right 合唱 / 副部 / 右侧声部

解析阶段仅 TTML(根据 <ttm:agent> 角色推导)与 Lyricify Syllable(根据行头对齐码)会解析该属性,其余格式解析默认均为 Unspecified。对于 LRC/QRC/YRC,可通过 helpers::conventions::apply_speaker_labels 从文本歌手标签推导对齐。

Clone this wiki locally