Skip to content

fix(lyric): 智能选择模式下 TTML 覆盖遵循格式优先级 - #105

Merged
imsyy merged 2 commits into
SPlayer-Dev:devfrom
Silcat2011:fix/ttml-overlay-smart-mode
Jul 27, 2026
Merged

fix(lyric): 智能选择模式下 TTML 覆盖遵循格式优先级#105
imsyy merged 2 commits into
SPlayer-Dev:devfrom
Silcat2011:fix/ttml-overlay-smart-mode

Conversation

@Silcat2011

Copy link
Copy Markdown
Contributor

问题

当歌词来源偏好为「智能选择」时,用户配置的歌词格式优先级(如 TTML > LYS > QRC > KRC > YRC > LRC)失效:

  • 「NCM 优先」下可正常获取 TTML 歌词的歌曲(《蝴蝶》《反乌托邦Pt.2》等)
  • 切换到「智能选择」后却退而获取低优先级的 QRC 并最终显示

根因

resolveTTMLOverlay 只尝试「在线主歌词所在平台」的 AMLL TTML DB:

  • 智能选择下,主歌词可能从 QQ 音乐拿到 QRC(QRC 排名高于 NCM 的 YRC)
  • 若该歌曲在 AMLL DB 仅有网易云版本而无 QQ 版本,单平台尝试失败
  • TTML 升级路径被跳过,回退到主歌词 QRC,TTML 优先级失效

改动

src/services/lyricResolve.ts

  1. shouldTryTTMLshouldTryTTMLByFormat(私有)

    • 去除 platform: Platform 参数与 platform is "netease" | "qqmusic" 类型守卫
    • 平台白名单下沉到 resolveTTMLOverlayTTML_PLATFORMS 常量
    • 仅按用户配置的格式优先级决定是否尝试 TTML 升级
  2. resolveTTMLOverlay 重写

    • 从「仅尝试 online.source.platform」改为遍历 ["netease", "qqmusic"] 依次尝试
    • 命中即返回;解决主歌词平台 ≠ AMLL DB 命中平台时的回退问题

验证

  • pnpm typecheck 通过(tsc + vue-tsc)
  • shouldTryTTML 全仓 grep 确认无外部调用方依赖被移除的 export
  • 复现场景(智能选择 + AMLL DB 仅 NCM 有匹配)下 TTML 现可正常覆盖

Silcat2011 and others added 2 commits July 25, 2026 11:24
- shouldTryTTML → shouldTryTTMLByFormat:去除平台白名单判断,
  仅按用户配置的格式优先级决定是否尝试 TTML 升级
- resolveTTMLOverlay:从「仅尝试主歌词所在平台」改为遍历
  NCM+QM 依次尝试,修复主歌词平台 ≠ AMLL DB 平台时 TTML
  命中失败、回退到低优先级 QRC 的问题
@imsyy
imsyy merged commit 5139937 into SPlayer-Dev:dev Jul 27, 2026
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