网易云音乐ncm转mp3

网易云音乐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上会乱码而这个转换工具没有做处理,目前我是自己修改这个信息:
Xnip2019-07-31_22-49-21

Mac系统可以用Music Tag Editor Pro这个软件来修改这些信息(win肯定也有类似的软件):
Xnip2019-07-31_22-49-44

几个工具的不同语言不同平台版本(我用的go语言-macOS版):
ncmdump-win/android-c++
ncmdump-gui-win-C#
ncmdump-python
ncmdump-golang(Linux/Mac会比较方便)
网易云音乐ncm文件格式解析

打赏

订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

2 评论
内联反馈
查看所有评论
Zen
Zen
4 年 前

请问这段Golang代码怎么用?

2
0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

网易云音乐ncm转mp3