Skip to content

fix: 修复下载 TTML 歌词时被重新格式化的问题 - #270

Merged
imsyy merged 1 commit into
SPlayer-Dev:devfrom
kid141252010:fix/download-ttml-format
Sep 20, 2026
Merged

imsyy merged 1 commit into
SPlayer-Dev:devfrom
kid141252010:fix/download-ttml-format

Conversation

@kid141252010

@kid141252010 kid141252010 commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

改动类型

  • 新功能(feat)
  • 缺陷修复(fix)
  • 重构 / 优化(不改变对外行为)
  • 文档(docs)
  • 其他(请在「改动说明」中注明)

是否包含破坏性变更

  • 是(请在「改动说明」中详细描述)
  • 否

改动说明

  • 背景与动机:在启用「同时保存为 TTML」下载歌词时,若歌词来源本身已是 TTML(如 AMLL TTML DB 或 Apple Music 插件源),此前逻辑会无条件走 parseLyric → toTtml 进行重组序列化,导致原始 TTML 中的 <head>、<metadata>(如 iTunes 歌曲元数据)、命名空间及原始样式格式被全部剥离,变成了简化的重排 XML。
  • 主要变更:
    1. 修改 src/utils/lyric/serialize.ts 的 buildDownloadLyric:当目标格式为 ttml 且源格式已是 ttml 时,直接返回原始歌词文本,避免不必要的重新格式化。
    2. 增加输入内容有效性检验与解析异常捕获(try-catch),避免空文本或异常 XML 抛出未捕获错误。

关联 Issue

测试情况

  • 本地验证通过:当源格式为 TTML 时,保存的 .ttml 文件完整保留原始元数据与排版样式;源格式为非 TTML(如 LRC/QRC)时,仍正常转换为 TTML。
  • 执行 pnpm test:web 全部通过。
  • 执行 pnpm typecheck(node + web)检查无类型错误。
  • 执行 pnpm lint 格式与规范校验全部通过。

自查清单

  • 本 PR 只包含一个主要功能 / 修复,没有夹带无关改动
  • 已在本地完整测试通过;AI 生成的代码同样自行测试并审阅过,未做未经验证的提交
  • 已运行 pnpm format,并确认 pnpm typecheck、pnpm lint 通过
  • 改动涉及原生模块时已 pnpm build:native 验证;未手写 native/*/index.d.ts
  • 已向 dev 分支提交

@kid141252010
kid141252010 force-pushed the fix/download-ttml-format branch 3 times, most recently from 5be886d to e68ec29 Compare September 20, 2026 06:43
@kid141252010
kid141252010 force-pushed the fix/download-ttml-format branch from e68ec29 to cb665a7 Compare September 20, 2026 07:07
@imsyy
imsyy merged commit 6672021 into SPlayer-Dev:dev Sep 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants