跳转至

架构

lyrics-core 的架构设计围绕着单向数据流转换:输入 -> 解析器 -> 模型 -> 导出器 -> 输出

核心组件

模型

应用中使用的核心数据结构。

  • SyncedLyrics:根容器。包含行列表、元数据(标题、艺术家)和 ID。
  • ISyncedLine:歌词行的接口。
    • SyncedLine:代表标准行,具有开始时间和内容。
    • KaraokeLine:代表卡拉OK行,包含音节级的时间信息 (KaraokeSyllable)。

解析器

负责将原始字符串或字节流转换为 模型

  • ILyricsParser:所有解析器的通用接口。
  • LrcParser:解析标准 .lrc 文件。
  • KugouKrcParser:解析加密或纯文本的 .krc 文件。
  • TTMLParser:解析基于 XML 的 TTML(常用于 Apple Music)。
  • AutoParser:门面类 (Facade),尝试猜测格式并使用合适的解析器。

导出器

负责将 模型 转换回特定的字符串格式。

  • ILyricsExporter:通用接口。
  • LrcExporter:将 SyncedLyrics 转换为 LRC 字符串。
  • TTMLExporter:将 SyncedLyrics 转换为 TTML XML。

工具

用于时间解析、编码/解码和格式猜测的辅助类。

数据流向

graph LR
    A[原始内容] --> B{AutoParser}
    B --> F[SyncedLyrics]
    F --> D{Lyrics UI}
    F --> G{导出器}
    G --> H[输出]