You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thanks for your report! This issue has been resolved and will be available in the current dev build or next stable release.
If you can still reproduce this problem, please open a new issue.
Activity
github-actions commentedon Oct 1, 2026
👋 @nattwood913-web
感谢提交 Issue!我们已经收到您的反馈,会尽快确认您的问题。
Thanks for opening this issue! We have received your report and will review it as soon as possible.
nattwood913-web commentedon Oct 1, 2026
补一个可以直接用的修法,对 dev
4c60335d09:主进程收到
ended时,如果当前是单曲循环,就不清空网易云打卡的曲目,只把本轮计时清零重来;别的情形照旧调onEnded()。主进程的循环模式来自player:syncPlayMode(渲染层init和改模式时都会同步过来),MCP 的get_playback_status读到的也是它。FM 模式下渲染层不走单曲重播,会切下一首,onTrackLoaded照常重置。两边模式万一没同步上,最坏就是退回现在的行为。验证过的:
在 v1.1.0 的
out/main/index.js上做了同样的两处改动,把createPlayProgress、网易云打卡那一段和case "ended"原样切出来,假时钟模拟一首 236.2 秒的歌:load)每次上报的
time都是 118 秒(阈值),total236。引擎的事件顺序是在 node 里直接加载
audio-engine.node、放一段 1.5 秒静音看的:放完先发ended,紧跟着stateChanged: stopped;对停下的播放器seek(0)会自己发stateChanged: playing,后面的play()不再发事件;停下以后pause()还会发stateChanged: paused。所以重播以后计时由onState(true)正常接上,睡眠定时停在曲末也不会把空闲时间算进去(上表第四行按这个顺序跑的)。改过的
app.asar换进 v1.1.0 安装版,能正常启动,日志没有报错。没做的:没在 dev 上跑 typecheck 和测试;Last.fm 那边是同一种写法,没改,照这个思路补的话,每一遍要重新取
timestamp、重置nowPlayingSent。网易云服务端对同一首歌连着上报怎么计数,还在真机上看。需要 PR 的话说一声。nattwood913-web commentedon Oct 1, 2026
补上一条评论说还在看的真机计数:读数对得上,但这一次不算干净。
上面那份补丁换进 v1.1.0 安装版以后,打卡方式用「原版日志接口」(legacy),单曲循环放同一首歌(约 270 秒)两遍整首,第三遍没到阈值就停了。
play_history记了两条(第二条是单曲循环自动重播开的)。这首歌在网易云听歌排行里的次数从 18 涨到 20:20 是手机上读的;18 是按公开排行接口play/record的相对分推的,这个账号上「分=次数×5」有三个点对得上。同一时段用列表循环放另一首一遍,次数加 1。不干净的地方:同一时段还有一首歌的次数涨了 1,这台电脑上的 SPlayer 从没放过它(
play_history0 条),手机上也没放,来路不明。所以「补丁后两遍都算了」和「两遍只算了一遍、另一次来自别处」这两种读法,这次的读数分不开。NCBL 没在补丁上测。fix: 修复播放日志上报与单曲循环计时 (Refs #339, #340, PR #288)
github-actions commentedon Oct 24, 2026
🎉 @nattwood913-web
感谢您的反馈!该问题已修复,并将在当前开发版或下一个正式版中生效。
若您仍能复现该问题,欢迎重新提交新的 Issue。
Thanks for your report! This issue has been resolved and will be available in the current dev build or next stable release.
If you can still reproduce this problem, please open a new issue.