[GH-ISSUE #732] 使用API获取歌曲信息时歌词信息可能偏差 #347

Closed
opened 2026-02-27 07:11:24 +03:00 by kerem · 7 comments
Owner

Originally created by @neokoni on GitHub (Jan 10, 2026).
Original GitHub issue: https://github.com/imsyy/SPlayer/issues/732

检查清单

  • 我已检索仓库中所有的 Issues,确保我没有重复提交问题;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内
  • 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中
  • 此问题可以在我的设备和当前环境中稳定复现
  • 此问题可以在最新版本 (Latest Release) 中复现
  • 此问题是在我更新到当前版本后出现的

是网页端还是客户端

客户端

当前系统环境

ArchLinux

当前 Node.js 及 npm 版本

No response

当前版本

3.0.0-beta9 Actions构建5854f44

具体信息

新加入的API(song-info)获取播放信息时, 如果客户端歌曲信息未完成加载, API可能会返回错误的信息

如果在这个阶段调用API, 会有信息的一些错误

比如以下情况:

  • 如果上一首歌曲无歌词, 当前歌曲有歌词, 则歌词可能为空
  • 如果上一首歌曲有歌词, 当前歌曲无歌词, 则返回信息的歌词可能为上一首歌的
  • 如果上一首和当前歌曲都有歌词, 则可能返回上一首的歌词

歌曲信息没啥问题, 主要是歌词这一阶段会出错, 且没有标识可以进一步确认

复现的话, 没有缓存的歌曲更容易发现
示例, 第一张图右边为正常

Image 图二显示的歌词为上一首的歌曲I Can't Wait (feat. GUMI), 但是当前正在播放为シアンブルー (feat. 初音ミク) Image

希望可以加入一个标识判断是否为已加载完的状态, 或者其他可以用于验证的标识

Originally created by @neokoni on GitHub (Jan 10, 2026). Original GitHub issue: https://github.com/imsyy/SPlayer/issues/732 ### 检查清单 - [x] 我已检索仓库中所有的 Issues,确保我**没有重复提交问题**;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内 - [x] 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中 - [x] 此问题可以在我的设备和当前环境中**稳定复现** - [x] 此问题可以在最新版本 (Latest Release) 中复现 - [ ] 此问题是在我更新到当前版本后**才**出现的 ### 是网页端还是客户端 客户端 ### 当前系统环境 ArchLinux ### 当前 Node.js 及 npm 版本 _No response_ ### 当前版本 3.0.0-beta9 Actions构建5854f44 ### 具体信息 新加入的API(song-info)获取播放信息时, 如果客户端歌曲信息未完成加载, API可能会返回错误的信息 如果在这个阶段调用API, 会有信息的一些错误 比如以下情况: - 如果上一首歌曲无歌词, 当前歌曲有歌词, 则歌词可能为空 - 如果上一首歌曲有歌词, 当前歌曲无歌词, 则返回信息的歌词可能为上一首歌的 - 如果上一首和当前歌曲都有歌词, 则可能返回上一首的歌词 歌曲信息没啥问题, 主要是歌词这一阶段会出错, 且没有标识可以进一步确认 复现的话, 没有缓存的歌曲更容易发现 示例, 第一张图右边为正常 <img width="1879" height="1074" alt="Image" src="https://github.com/user-attachments/assets/f4e839d0-56f1-4b1b-ba6b-76a70b5ec659" /> 图二显示的歌词为上一首的歌曲I Can't Wait (feat. GUMI), 但是当前正在播放为シアンブルー (feat. 初音ミク) <img width="1368" height="743" alt="Image" src="https://github.com/user-attachments/assets/69dc88a0-b3b6-46cf-a190-de1e4cc6cc3c" /> 希望可以加入一个标识判断是否为已加载完的状态, 或者其他可以用于验证的标识
kerem 2026-02-27 07:11:24 +03:00
  • closed this issue
  • added the
    已修复
    label
Author
Owner

@github-actions[bot] commented on GitHub (Jan 10, 2026):

👋 您好 @neokoni,感谢提交 Issue!
🚀 我们已经收到您的反馈,会尽快确认你的问题

在等待回复期间,您可以:

<!-- gh-comment-id:3732309138 --> @github-actions[bot] commented on GitHub (Jan 10, 2026): 👋 您好 @neokoni,感谢提交 Issue! 🚀 我们已经收到您的反馈,会尽快确认你的问题 在等待回复期间,您可以: - 📖 查看 [项目文档](https://github.com/imsyy/SPlayer/blob/dev/README.md) - 💬 加入 [交流群](https://qm.qq.com/cgi-bin/qm/qr?k=2-cVSf1bE0AvAehCib00qFEFdUvPaJ_k&jump_from=webapi&authKey=1NEhib9+GsmsXVo2rCc0IbRaVHeeRXJJ0gbsyKDcIwDdAzYySOubkFCvkV32+7Cw) 进行实时讨论 - 🔍 搜索 [现有 Issues](https://github.com/imsyy/SPlayer/issues) 查看是否有类似问题
Author
Owner

@MoYingJi commented on GitHub (Jan 10, 2026):

如果需要实时获取,建议使用 WebSocket API

<!-- gh-comment-id:3732363019 --> @MoYingJi commented on GitHub (Jan 10, 2026): 如果需要实时获取,建议使用 [WebSocket API](https://splayer.imsyy.top/socket.html)
Author
Owner

@neokoni commented on GitHub (Jan 10, 2026):

如果需要实时获取,建议使用 WebSocket API

并非换成websocket就好了, ws和api发送时给的getTrackInfoFromRenderer(), 理论上也会出现

并非理论, 其实也能复现, 比如这个,

c.json

使用{"type":"get-song-info"}时获取的信息中, 歌曲是Shape of you, 但是歌词是上一首的Play Data的歌词

而且并非是需要实时获取, 主要是要拿一下歌词信息

<!-- gh-comment-id:3732419540 --> @neokoni commented on GitHub (Jan 10, 2026): > 如果需要实时获取,建议使用 [WebSocket API](https://splayer.imsyy.top/socket.html) 并非换成websocket就好了, ws和api发送时给的getTrackInfoFromRenderer(), 理论上也会出现 并非理论, 其实也能复现, 比如这个, [c.json](https://github.com/user-attachments/files/24541238/c.json) 使用{"type":"get-song-info"}时获取的信息中, 歌曲是Shape of you, 但是歌词是上一首的Play Data的歌词 而且并非是需要实时获取, 主要是要拿一下歌词信息
Author
Owner

@MoYingJi commented on GitHub (Jan 10, 2026):

我的意思是,歌词的获取是异步的,所以需要等待 lyric-change 事件,不是主动去发

而且并非是需要实时获取, 主要是要拿一下歌词信息

我以为你是要实时获取(比如原生桌面歌词),才跟你说的 WS API,这样只需要等待 lyric-change 就好了

希望可以加入一个标识判断是否为已加载完的状态, 或者其他可以用于验证的标识

不过这个也可以有,毕竟要单次获取的时候有用🤔

<!-- gh-comment-id:3732447775 --> @MoYingJi commented on GitHub (Jan 10, 2026): 我的意思是,歌词的获取是异步的,所以需要等待 `lyric-change` 事件,不是主动去发 > 而且并非是需要实时获取, 主要是要拿一下歌词信息 我以为你是要实时获取(比如原生桌面歌词),才跟你说的 WS API,这样只需要等待 `lyric-change` 就好了 > 希望可以加入一个标识判断是否为已加载完的状态, 或者其他可以用于验证的标识 不过这个也可以有,毕竟要单次获取的时候有用🤔
Author
Owner

@github-actions[bot] commented on GitHub (Jan 12, 2026):

🤝 您好 @neokoni,感谢您的反馈!我们已经确认该问题,并将在下一个版本中修复

<!-- gh-comment-id:3736656697 --> @github-actions[bot] commented on GitHub (Jan 12, 2026): 🤝 您好 @neokoni,感谢您的反馈!我们已经确认该问题,并将在下一个版本中修复
Author
Owner

@imsyy commented on GitHub (Jan 12, 2026):

已加入 歌词是否已加载 标识

<!-- gh-comment-id:3737786764 --> @imsyy commented on GitHub (Jan 12, 2026): 已加入 `歌词是否已加载` 标识
Author
Owner

@github-actions[bot] commented on GitHub (Jan 12, 2026):

🎉 您好 @neokoni,该问题已修复,感谢您的反馈!

若您觉得仍存在问题,请重新开启或者创建新的 Issue,我们会尽快确认并修复

<!-- gh-comment-id:3737787684 --> @github-actions[bot] commented on GitHub (Jan 12, 2026): 🎉 您好 @neokoni,该问题已修复,感谢您的反馈! 若您觉得仍存在问题,请重新开启或者创建新的 Issue,我们会尽快确认并修复
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/SPlayer#347
No description provided.