网易云音乐ncm转mp3
网易云音乐有些要vip才能听的音乐,即使你开会员下载了,会员过期后也听不了(因为你下载的是网易的加密格式.ncm
而不是普通的.mp3
),所以我们将它转成mp3上传到《我的音乐云盘》中,就可以听了,也可以在其他播放器中播放了。
github有好几个工具,我使用的是go版本的,它的用法很简单:
./ncmdump-darwin-amd64 xxxx.ncm
但如果ncm很多,用上边的方法自己一首一首的转太麻烦,所以我就写了段代码读取我的网易云音乐目录中的所有.ncm
文件,并判断这些ncm文件是否已经有同名的.mp3
文件,如果有说明已经转换过了,如果没有我就调用转换工具进行转换(我用的是我熟悉的php,你可以用你自己熟悉的语言来写)。
把以下代码保存成ncm2mp3.php
<?php
/**
* 网易ncm格式转mp3格式,生成的mp3与原ncm文件在同目录,已转换过的不会再次转换。使用方法:
* 方法一:php ncm2mp3 默认转换“~/Music/网易云音乐”目录中的所有ncm文件
* 方法二:php ncm2mp3 /path/to/folder/ 转换指定目录中的所有ncm文件为mp3
*/
$user = get_current_user();
$dir = isset($_SERVER['argv'][1]) ? realpath($_SERVER['argv'][1]) : '/Users/' . $user . '/Music/网易云音乐';
$arr = glob($dir . '/*.ncm');
foreach ($arr as $val){
$mp3 = substr($val, 0 , -4).'.mp3';
if(file_exists($mp3)){
continue;
}
//转义歌名中的空格
$val = str_replace(' ','\\ ', $val);
//转义歌名中的圆括号,单引号,双引号
$val = strtr($val, [
'('=>'\\(',
')'=>'\\)',
"'"=>"\\'",
'"'=>'\\"',
]);
// echo "$val\n";
// “ncmdump-darwin-amd64”要放在与本文件相同的目录中
$ncmdumpAbsPath = __DIR__ . '/ncmdump-darwin-amd64';
exec($ncmdumpAbsPath . ' '.$val);
}
开始使用
#转换网易云音乐目录下的所有`.ncm`为`.mp3`
php ./ncm2mp3.php
#转换指定的单个ncm文件为mp3(先复制php ./ncm2mp3.php到终端,空一个空格,然后把歌曲文件拖进去,回车就行)
php ./ncm2mp3.php /path/to/xxxx.mp3
以下是执行结果:
bruce@Bruce's MBP > php ./ncm2mp3.php
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/孙楠,韩红 - 美丽的神话.mp3
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/张学友 - 情系半生.mp3
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/张敬轩 - 断点.mp3
2019/07/31 15:27:07 Adding music name
2019/07/31 15:27:07 Adding album name
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/张敬轩,麦家瑜 - 石径.mp3
2019/07/31 15:27:07 Adding music name
2019/07/31 15:27:07 Adding album name
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/李克勤 - 爱不释手.mp3
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/谢安琪 - 喜帖街.mp3
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/谢安琪 - 年度之歌.mp3
2019/07/31 15:27:07 Adding artist
2019/07/31 15:27:07 /Users/bruce/Music/网易云音乐/陈奕迅 - 落花流水.mp3
2019/07/31 15:27:07 Adding music name
2019/07/31 15:27:07 Adding album name
2019/07/31 15:27:07 Adding artist
但要注意,Mac版的转换之后有可能有乱码,这是因为音乐是在Win上添加的信息,它的文字编码在Mac上会乱码而这个转换工具没有做处理,目前我是自己修改这个信息:
Mac系统可以用Music Tag Editor Pro这个软件来修改这些信息(win肯定也有类似的软件):
几个工具的不同语言不同平台版本(我用的go语言-macOS版):
ncmdump-win/android-c++
ncmdump-gui-win-C#
ncmdump-python
ncmdump-golang(Linux/Mac会比较方便)
网易云音乐ncm文件格式解析
觉得文章对你有用的话鼓励一下我吧
请问这段Golang代码怎么用?
我更新了一下,我这个是php,不是golang,这个转换工具的最基本用法就是
./ncmdump-darwin-amd64 xxxx.ncm
,我写代码只是自动读取ncm文件然后调用ncmdump-darwin-amd64
转换工具来做转换。