lyric-parser icon indicating copy to clipboard operation
lyric-parser copied to clipboard

解析歌词时候,歌词排序混乱,时间也不匹配

Open TothingWay opened this issue 7 years ago • 6 comments

在使用网易云音乐的api获取歌词之后,该插件解析出来的歌词排序混乱,时间不匹配。如图: cd1e8d1b-204d-40e6-89ee-1a3b9adbecf5 获取到的歌词字符串: 87c91177-309c-4997-be6a-ae631626f34c

TothingWay avatar Feb 14 '18 06:02 TothingWay

time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0) * 10 把上面一段代码改为下面这句就可以了: time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0)

JunlingQin avatar Aug 02 '18 07:08 JunlingQin

网易云音乐接口拿到的歌词微秒位有三种情况(:100,:010,:10),这里需要对result[3]做处理。 let tirdResult = result[3] || 0 let length = tirdResult.length let __tirdResult = parseInt(tirdResult, 10) __tirdResult = length > 2 && __tirdResult < 100 ? __tirdResult : __tirdResult > 99 ? __tirdResult : __tirdResult * 10 this.lines.push({ time: result[1] * 60 * 1000 + result[2] * 1000 + __tirdResult, txt }) 你可以fork一下包,然后修改push,package中依赖改一下即可 "lyric-parser": "git+https://github.com/Palereed/lyric-parser.git"

Palereed avatar Oct 09 '18 08:10 Palereed

网易云音乐接口拿到的歌词微秒位有三种情况(:100,:010,:10),这里需要对result[3]做处理。 let tirdResult = result[3] || 0 let length = tirdResult.length let __tirdResult = parseInt(tirdResult, 10) __tirdResult = length > 2 && __tirdResult < 100 ? __tirdResult : __tirdResult > 99 ? __tirdResult : __tirdResult * 10 this.lines.push({ time: result[1] * 60 * 1000 + result[2] * 1000 + __tirdResult, txt }) 你可以fork一下包,然后修改push,package中依赖改一下即可 "lyric-parser": "git+https://github.com/Palereed/lyric-parser.git"

let tirdResult = result[3] || '0'; // 数字的 0 查询长度会变为 undefined,感觉不如直接指定 '0'
let length = tirdResult.length;
let __tirdResult = parseInt(tirdResult, 10);
__tirdResult = length > 2 ? __tirdResult : __tirdResult * 10; 

@Palereed 应该这样子就可以了

superhuai avatar Jan 14 '19 07:01 superhuai

也欢迎提 pr,兼容这种歌词格式

ustbhuangyi avatar Jun 13 '19 01:06 ustbhuangyi

time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0) * 10 把上面一段代码改为下面这句就可以了: time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0)

this.lines.push({
time: result[1] * 60 * 1000 +
       result[2] * 1000 +
       (parseInt(result[3]) || 0),
txt: txt
});

最后一位数要转换成数字,不然就是字符串拼接了

AriesZzzz avatar Jan 16 '20 10:01 AriesZzzz

作者还打算官方npm修复这个网易云api歌词不匹配的bug吗

wenqd avatar Jun 29 '20 11:06 wenqd