-
Notifications
You must be signed in to change notification settings - Fork 1
API Enums
四个核心枚举定义在 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。
描述输入文本的形态特征。作为 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 已完成这一展开步骤。
描述输出目标格式或已解析 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);描述歌词文档的时间同步粒度,记录于 FileInfo::sync_types:
| 变体 | 判别值 | 含义 |
|---|---|---|
Unknown |
0 | 未能判定(Default,如无任何时间戳的纯文本) |
SyllableSynced |
1 | 逐字同步:每个字/音节均具备时间戳 |
LineSynced |
2 | 逐行同步:仅每行整体具备时间戳 |
MixedSynced |
3 | 混合同步:部分行为逐字、部分行为逐行 |
Unsynced |
4 | 完全无同步时间的文本 |
标记歌词行在对唱或排版时的对齐归属,存在于每个 LineInfo 变体上:
| 变体 | 含义 |
|---|---|
Unspecified |
未指定对齐(Default) |
Left |
主唱 / 左侧声部 |
Right |
合唱 / 副部 / 右侧声部 |
解析阶段仅 TTML(根据 <ttm:agent> 角色推导)与 Lyricify Syllable(根据行头对齐码)会解析该属性,其余格式解析默认均为 Unspecified。对于 LRC/QRC/YRC,可通过 helpers::conventions::apply_speaker_labels 从文本歌手标签推导对齐。