Lyrics Helper
Rust 歌词工具库,支持解析、生成、解密、搜索多种歌词格式。从 WXRIW/Lyricify-Lyrics-Helper(C#)重写而来。
快速开始
将 lyrics-helper 添加到你的项目:
[]
= "0.2"
自动检测格式并解析歌词:
use parse_auto;
指定格式解析并转换:
use ;
运行完整示例(从 workspace 根目录):
从 0.1 升级到 0.2
0.2.0 改变了逐字歌词的音节模型:LineInfo::Syllable 与 LineInfo::FullSyllable
的 syllables 字段由 Vec<SyllableInfo> 变为 Vec<SyllableItem>,对应上游 C# 的
ISyllableInfo。同一单词内被合并的音节表示为 SyllableItem::Full(FullSyllableInfo),
它保留各子音节各自的时间信息,聚合文本与首尾时间由子项推导。
只读取文本或时间的代码改动很小,把字段访问换成同名方法即可:
// 0.1
let text = &syllables.text;
let start = syllables.start_time;
// 0.2
let text = syllables.text;
let start = syllables.start_time;
需要拿回扁平的 SyllableInfo 序列时(例如自己生成逐字格式):
use ;
let flat = flatten_syllable_items; // Vec<SyllableItem> -> Vec<SyllableInfo>
let items = to_syllable_items; // 反向包装
单个音节项也可以用 parts() 取到不分配的 &[SyllableInfo]。就地修改
FullSyllableInfo 的子音节后,必须调用 refresh_properties() 让缓存失效。
支持的格式
| 功能 | 格式 |
|---|---|
| 解析 | Lyricify Syllable, Lyricify Lines, LRC, QRC, KRC, YRC, TTML, Spotify JSON, Musixmatch JSON, Apple Music |
| 生成 | Lyricify Syllable, Lyricify Lines, LRC, QRC, KRC, YRC |
| 解密 | QRC, KRC |
| 搜索 | QQ 音乐, 网易云音乐, 酷狗音乐, 汽水音乐, Apple Music, Musixmatch, LRCLIB, Spotify |
搜索功能需要启用 search feature(默认启用),依赖 reqwest 和 tokio。如需纯离线解析库,禁用默认 features:
= { = "0.2", = false }
项目架构
项目采用 Cargo workspace,由 6 个 crate 组成:
Lyricify-Lyrics-Helper/ # workspace 根目录
├── Cargo.toml # workspace 定义
├── lyrics-core/ # 核心模型与 traits
│ └── src/
│ ├── models/ # LyricsData, LineInfo, SyllableItem, TrackMetadata, 枚举
│ ├── traits/ # LyricsParser, LyricsGenerator, LyricsDecrypter
│ └── helpers/ # chinese, string, math, offset, type detection, optimization
├── lyrics-parsers/ # 每种格式一个解析器
├── lyrics-generators/ # 每种格式一个生成器
├── lyrics-crypto/ # QRC 和 KRC 解密(AES/DES/ECB/CBC)
├── lyrics-search/ # 各平台歌曲搜索(search feature)
├── lyrics-helper/ # 门面 crate,re-export 所有子 crate
│ ├── tests/
│ │ ├── parser_tests.rs # 集成测试
│ │ └── test_data/ # 各格式示例歌词文件
│ ├── examples/
│ │ ├── demo.rs # 解析/生成/解密演示
│ │ ├── search_test.rs # 搜索 API 演示
│ │ └── search_lyrics_test.rs # 搜索+获取歌词演示
│ └── src/lib.rs # 顶层 API:parse, parse_auto, generate_string
└── AGENTS.md
依赖关系:lyrics-core ← lyrics-parsers / lyrics-generators / lyrics-crypto ← lyrics-search ← lyrics-helper
用户只需依赖 lyrics-helper,通过 use lyrics_helper::* 即可访问全部功能。
开发
所有命令在 workspace 根目录执行:
项目使用 Rust 2024 edition(需要 Rust 1.85+),dev-dependency 包含 pretty_assertions 用于测试输出对比。
致谢
基于 WXRIW/Lyricify-Lyrics-Helper(C#)重写为 Rust 版本。