lyric-parser
lyric-parser copied to clipboard
解析歌词时候,歌词排序混乱,时间也不匹配
在使用网易云音乐的api获取歌词之后,该插件解析出来的歌词排序混乱,时间不匹配。如图:
获取到的歌词字符串:
time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0) * 10 把上面一段代码改为下面这句就可以了: time: result[1] * 60 * 1000 + result[2] * 1000 + (result[3] || 0)
网易云音乐接口拿到的歌词微秒位有三种情况(: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"
网易云音乐接口拿到的歌词微秒位有三种情况(: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 应该这样子就可以了
也欢迎提 pr,兼容这种歌词格式
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
});
最后一位数要转换成数字,不然就是字符串拼接了
作者还打算官方npm修复这个网易云api歌词不匹配的bug吗