-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[已解明] 登陆账号后进入音乐库页面程序卡死 #1019
Comments
同样的问题,win11,cpu占用相当高,偶尔会卡死,但是音乐还会正常播放 |
会不会是网易云API那边最近有什么更改导致的问题,好像是最近几天才出现的 |
签到还是能签上, 但是因为这个 400 返回没有处理引起了奇怪的 bug. |
mac端也有这个问题,音乐还在播放,界面能够滚动,但是点击无反应,滚动条也是卡死状态。 |
Linux 端也出现了这个问题 |
mac m1 4.2版本 同样问题 |
我win10,遇到了同样问题 |
win10 同样的问题 |
有时间的话还是麻烦大佬修一下这个 bug,还是有些影响使用的,现在都不敢点音乐库 |
win10同样的问题 单文件版0.42 系统20H2 |
理论上用 axios 拦截 400 响应码然后执行一次刷新页面似乎可行, 这周末我处理一下. 编辑: 编辑2: 编辑3: 编辑4:
导致的错误, 似乎是因为 loadData() 里执行了一个看上去很奇怪的判断引起死循环
把这玩意注释了依然加载歌词, 不影响使用. @Hibanaw @memorydream 你们有什么头绪么 |
我有一个疑问,这个问题在你的电脑上每次都稳定复现吗?因为在我这里是个低概率事件,只有刚刚我尝试使用release的0.4.2版本时发生过两次(这期间我尝试启动了十几次) |
编辑3: 以上为几次卡死时获取的歌词id,启动yesplaymusic后,在浏览器中输入 观察这些数据,有nolyric: true的,有歌词只有作词作曲被过滤的 编辑4: 编辑2: 看上去确实是wy修改了API返回的数据导致的问题,但是我还需要再多跑出两次卡死来验证这个结果 编辑: |
据此, 我测试的时候还发现了如歌曲id 1873048358 出现了只有作曲没有作词的 编辑:
我在此直接判断是否存在值 '作词',
在 pickedLyric() 里直接过滤掉不含'作词', 在我本机上测试这样是可行的, 请你校对一下逻辑是否可以. |
这样不行,pickedLyric这个方法的逻辑是随机在歌词里摘出几句,并显示在卡片上,所以做词作曲全部要过滤 原判断逻辑看上去没有问题 |
我明白了. 编辑:
这样可以避免保存死循环. |
<!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:DengXian;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
***@***.***";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
***@***.***";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:DengXian;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
-->我在YesPlayMusic的Win客户端上基本上每次都稳定复现,而使用网页版或将网页保存为应用时偶尔出现 Sent from Mail for Windows From: memorydreamSent: 2021年11月6日 07:25To: qier222/YesPlayMusicCc: FrankWursty; CommentSubject: Re: [qier222/YesPlayMusic] 登陆账号后进入音乐库页面程序卡死 (Issue #1019) 我有一个疑问,这个问题在你的电脑上每次都稳定复现吗?因为在我这里是个低概率事件,只有刚刚我尝试使用release的0.4.2版本时发生过两次(这期间我尝试启动了十几次)因为这段时间我一直在使用最新的构建而不是release版本,没有发生过这个情况,之前是在修改代码调试的时候,当触发重新编译后出现过几次,所以我对这个bug一直是一个很迷惑的状态—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
|
已证实 @isNijikawa 的 https://github.com/isNijikawa/YesPlayMusic/commit/05a3082676073e273fca688e7ae9c75e1e70b214 这个修复可以解决问题,感谢! |
mac x86也卡死orz |
使用这个链接里修复版本的windows 版本 还存在界面卡住 不是每次都能复现BUG https://github.com/qier222/YesPlayMusic/actions/runs/1437734074 |
@isNijikawa |
这是哪首歌? 我需要测试一下.
试试? |
https://music.163.com/#/song?id=437752427 是这一首
还是那条数据 编辑2: 这是发现的第二条卡死的数据 以上结果应用了新的if判断 |
太鬼畜了, 歌曲 id 1463539724 的
得到的数据是 {"lyric":"[00:00.000] 作词 : Ryan Glenn Taubert\n[00:01.000] 作曲 : Ryan Glenn Taubert\n[99:00.00]纯音乐,请欣赏\n"} 导致现在的逻辑依然会死循环歌词, 需要在 pickedLyric() 里过滤 "纯音乐,请欣赏", 这引发了一个疑惑, 为什么getRandomLyric() 里的保存歌词方法中的歌词过滤不起作用? |
还是卡住,reset不起作用,master branch编译的,win11 @isNijikawa |
我们可以考虑换个实现的思路吗? |
是可以 |
promise 这个东西很有意思, 但是 vue 2 里 在 Promise.all 里似乎无法修改 $data 的内容. 我换了一个实现思路, 利用 @memorydream 提到的数组方法: 把 "纯音乐,请欣赏" 存入数组, 数组长度大于 1 就不保存歌词 (其实反过来如果没有歌词, 数组长度为 0 则不储存也可以). pickedLyric() {
if (this.lyric === undefined) return '';
let lyric = this.lyric.split('\n');
let lineIndex = randomNum(0, lyric.length - 1);
while (lineIndex + 4 > lyric.length) {
lineIndex = randomNum(0, lyric.length - 1);
}
return [
lyric[lineIndex].split(']')[1],
lyric[lineIndex + 1].split(']')[1],
lyric[lineIndex + 2].split(']')[1],
];
},
getRandomLyric() {
if (this.liked.songs.length === 0) return;
getLyric(
this.liked.songs[randomNum(0, this.liked.songs.length - 1)]
).then(data => {
if (data.lrc !== undefined) {
var promise = data.lrc.lyric.split('\n').filter(l => {
if (l.includes('纯音乐,请欣赏')) {
return true;
}
return false;
});
if (promise.length === 0) {
this.lyric = data.lrc.lyric;
}
}
});
} 然后我把测试用的歌做到了歌单里, 里面第一首歌以外全是引起卡死的歌, 方便大家做测试. |
越多人 Approve 我越敢合併( |
@pan93412 |
我真的很想知道為什麼會因為找不到歌詞而卡死⋯⋯ 😂 現在有點忙,我有空再處理。 |
https://music.163.com/#/song?id=443291232 这是卡死的歌,我会尝试一下其他的方案 |
问题查明了,不需要异步,也不需要什么乱七八糟的判断 此代码在pickedLyric |
win11 上的客户端.
任何方式登录账号, 进入音乐库页面就会卡死, 托盘菜单中右键退出程序, 依然会在后台运行, 且 CPU 占用很高
重置和删用户文件不起作用, 安装版和安装到内存的版本都会出现卡死.
控制台输出一个 POST 请求错误:
完整日志
main.js:25 如出现问题,可尝试在本页输入 resetApp() 然后按回车重置应用。
undefined:1 Failed to load resource: the server responded with a status of 404 (Not Found)
electron/js2c/renderer_init.js:13 (electron) The remote module is deprecated. Use https://github.com/electron/remote instead.
log @ electron/js2c/renderer_init.js:13
(anonymous) @ electron/js2c/renderer_init.js:85
./lib/renderer/api/remote.ts @ electron/js2c/renderer_init.js:85
webpack_require @ electron/js2c/renderer_init.js:1
loader @ electron/js2c/renderer_init.js:77
(anonymous) @ electron/js2c/renderer_init.js:25
(anonymous) @ nativeAlert.js:17
7381 @ nativeAlert.js:14
c @ bootstrap:89
a0b9 @ chunk-4bbc70da.528d9c00.js:1
c @ bootstrap:89
Promise.then (async)
component @ index.js:29
(anonymous) @ vue-router.esm.js:2144
(anonymous) @ vue-router.esm.js:2171
(anonymous) @ vue-router.esm.js:2171
Xt @ vue-router.esm.js:2170
(anonymous) @ vue-router.esm.js:2106
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ Scrollbar.vue:58
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ index.js:167
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
Ft @ vue-router.esm.js:2012
ee.confirmTransition @ vue-router.esm.js:2387
ee.transitionTo @ vue-router.esm.js:2260
e.push @ vue-router.esm.js:2704
(anonymous) @ vue-router.esm.js:3020
we.push @ vue-router.esm.js:3019
xe.a.push @ index.js:144
toLogin @ Navbar.vue:172
re @ vue.runtime.esm.js:1854
n @ vue.runtime.esm.js:2179
i._wrapper @ vue.runtime.esm.js:6917
xhr.js:177 POST http://localhost:27232/api/daily_signin?type=0×tamp=1635429769199 400 (Bad Request)
(anonymous) @ xhr.js:177
t.exports @ xhr.js:13
t.exports @ dispatchRequest.js:52
Promise.then (async)
u.request @ Axios.js:61
(anonymous) @ bind.js:9
s @ user.js:77
m @ common.js:110
activated @ library.vue:241
re @ vue.runtime.esm.js:1854
Bn @ vue.runtime.esm.js:4219
Fn @ vue.runtime.esm.js:4192
tr @ vue.runtime.esm.js:4370
Qn @ vue.runtime.esm.js:4335
(anonymous) @ vue.runtime.esm.js:1980
le @ vue.runtime.esm.js:1906
Promise.then (async)
ae @ vue.runtime.esm.js:1933
ve @ vue.runtime.esm.js:1990
er @ vue.runtime.esm.js:4402
rr.update @ vue.runtime.esm.js:4544
yt.notify @ vue.runtime.esm.js:730
set @ vue.runtime.esm.js:1055
(anonymous) @ vue-router.esm.js:2989
(anonymous) @ vue-router.esm.js:2988
ee.updateRoute @ vue-router.esm.js:2409
(anonymous) @ vue-router.esm.js:2263
(anonymous) @ vue-router.esm.js:2397
r @ vue-router.esm.js:2001
r @ vue-router.esm.js:2008
Ft @ vue-router.esm.js:2012
(anonymous) @ vue-router.esm.js:2392
r @ vue-router.esm.js:2001
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ vue-router.esm.js:2127
(anonymous) @ vue-router.esm.js:2203
Promise.then (async)
(anonymous) @ vue-router.esm.js:2150
(anonymous) @ vue-router.esm.js:2171
(anonymous) @ vue-router.esm.js:2171
Xt @ vue-router.esm.js:2170
(anonymous) @ vue-router.esm.js:2106
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ Scrollbar.vue:58
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ index.js:158
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
Ft @ vue-router.esm.js:2012
ee.confirmTransition @ vue-router.esm.js:2387
ee.transitionTo @ vue-router.esm.js:2260
e.push @ vue-router.esm.js:2704
(anonymous) @ vue-router.esm.js:3020
we.push @ vue-router.esm.js:3019
xe.a.push @ index.js:144
(anonymous) @ loginAccount.vue:223
Promise.then (async)
(anonymous) @ loginAccount.vue:222
Promise.then (async)
handleLoginResponse @ loginAccount.vue:221
Promise.then (async)
login @ loginAccount.vue:206
re @ vue.runtime.esm.js:1854
n @ vue.runtime.esm.js:2179
i._wrapper @ vue.runtime.esm.js:6917
xhr.js:177 POST http://localhost:27232/api/daily_signin?type=1×tamp=1635429769199 400 (Bad Request)
(anonymous) @ xhr.js:177
t.exports @ xhr.js:13
t.exports @ dispatchRequest.js:52
Promise.then (async)
u.request @ Axios.js:61
(anonymous) @ bind.js:9
s @ user.js:77
m @ common.js:113
activated @ library.vue:241
re @ vue.runtime.esm.js:1854
Bn @ vue.runtime.esm.js:4219
Fn @ vue.runtime.esm.js:4192
tr @ vue.runtime.esm.js:4370
Qn @ vue.runtime.esm.js:4335
(anonymous) @ vue.runtime.esm.js:1980
le @ vue.runtime.esm.js:1906
Promise.then (async)
ae @ vue.runtime.esm.js:1933
ve @ vue.runtime.esm.js:1990
er @ vue.runtime.esm.js:4402
rr.update @ vue.runtime.esm.js:4544
yt.notify @ vue.runtime.esm.js:730
set @ vue.runtime.esm.js:1055
(anonymous) @ vue-router.esm.js:2989
(anonymous) @ vue-router.esm.js:2988
ee.updateRoute @ vue-router.esm.js:2409
(anonymous) @ vue-router.esm.js:2263
(anonymous) @ vue-router.esm.js:2397
r @ vue-router.esm.js:2001
r @ vue-router.esm.js:2008
Ft @ vue-router.esm.js:2012
(anonymous) @ vue-router.esm.js:2392
r @ vue-router.esm.js:2001
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ vue-router.esm.js:2127
(anonymous) @ vue-router.esm.js:2203
Promise.then (async)
(anonymous) @ vue-router.esm.js:2150
(anonymous) @ vue-router.esm.js:2171
(anonymous) @ vue-router.esm.js:2171
Xt @ vue-router.esm.js:2170
(anonymous) @ vue-router.esm.js:2106
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ Scrollbar.vue:58
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
(anonymous) @ vue-router.esm.js:2005
(anonymous) @ vue-router.esm.js:2379
(anonymous) @ index.js:158
h @ vue-router.esm.js:2357
r @ vue-router.esm.js:2004
r @ vue-router.esm.js:2008
Ft @ vue-router.esm.js:2012
ee.confirmTransition @ vue-router.esm.js:2387
ee.transitionTo @ vue-router.esm.js:2260
e.push @ vue-router.esm.js:2704
(anonymous) @ vue-router.esm.js:3020
we.push @ vue-router.esm.js:3019
xe.a.push @ index.js:144
(anonymous) @ loginAccount.vue:223
Promise.then (async)
(anonymous) @ loginAccount.vue:222
Promise.then (async)
handleLoginResponse @ loginAccount.vue:221
Promise.then (async)
login @ loginAccount.vue:206
re @ vue.runtime.esm.js:1854
n @ vue.runtime.esm.js:2179
i._wrapper @ vue.runtime.esm.js:6917
看上去是自动签到出的问题? 在网易云客户端里显示已签到.
前几天把所有喜欢的音乐和歌单都删了, 当天和第二天是没有问题的, 之后出现把音乐加入歌单后就会卡死, 昨天起打开音乐库就卡死, 暂时不清楚其中的因果.
The text was updated successfully, but these errors were encountered: