利用MyFreeMP3扩展网易云音乐功能
< Părere la script-ul 网易云音乐-MyFreeMP3扩展
感谢算法支持,已经更新到代码里面了
您提到的引用md5.js失败的问题,我这里也有遇到了。我这里是因为使用了uBlock Origin,将bootcdn作为广告/风险网址拦截了。如果您也是同样的问题,可以手动访问一下https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.js,在弹出的确认窗口中选择允许继续访问就可以了。
还有几个问题。
1.search的关键词里,不应该是“歌曲名 - 歌手”,而应该是“歌曲名 歌手”,加了“-”结果反而不准确。
eg:“ハナミズキ - 一青窈”
2.onsearch里,应该先根据歌曲名预筛选,否则偶尔会匹配到其他的音乐,用完全相等或者是包含曲名都有道理,有些歌曲名里会带feat,后者可以避免匹配不到,但是后者也会导致匹配到tv ver或者cover。
eg:“君のせい - the peggies”
3.用专辑封面图片来精确匹配并不合适,myfreemp3并不仅有网易云的来源,如果没有2的话,可能会导致取到同专辑下的另一首歌,例子同2。实现2的话可以不改。
4.getBestQualitySong前需要加入一个时长判断,跟3其实也有关系,封面不匹配导致无法精确匹配,然后有些命名不规范又高音质的会污染搜索结果。正常的结果99.9%会大于错误的结果,所以应该先判断时长出现次数最多的作为正确时长,再选择最佳的音质。
例子如图。
token计算方式改了,脚本失效。
同时可以优化计算逻辑。
另外我这边引用md5.js失败,不确定其他人是否有问题。
encode_new.encode = (function () {
const version = "20240531.";
const defaultKey =
"4b9qrOXu305U5Ex5U1yYv69jZO5EbznZq9nWaY5e5NW2GImw27aEBjL4OgW01Tpy";
const customAlphabet =
"hQxDsS6geBiG1MTOPZzoHkt8Wyf4AnLU7FqJbp+0N=udc2j/VY9aICrmX3Rvl5KwE";
return (value, key = defaultKey) => {
const xor = value.replace(/./g, (char, index) =>
String.fromCharCode(
char.charCodeAt(0) ^ key.charCodeAt(index % key.length)
)
);
const base64 = btoa(xor);
const result = base64.replace(/./g, (char) => {
const standardAlphabet =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
if (char === standardAlphabet[standardAlphabet.length - 1]) {
return char;
}
return customAlphabet[standardAlphabet.indexOf(char)];
});
return version + md5(result);
};
})();