如何转换网易云音乐缓存文件为MP3格式

在一个雨后的傍晚,我躺在窗前听着喜欢的音乐,感叹于网络的发达,我们可以轻松地在线听到任何我们想听的音乐。但突然之间,我想起一个问题:如果某一天我去了一个没有网络的地方,我还能听到这些音乐吗?当然,购买会员可以下载,但不是所有人都有这个能力。于是,我决定自己动手,将网易云音乐的缓存文件转为MP3格式,以便我随时随地都可以听到这些音乐。

1. 前置准备

首先,你需要有Python环境。我们的代码是用Python编写的。

2. 深度遍历获取所有缓存文件

为了获取到缓存目录下的所有文件,我们使用了深度优先搜索(DFS):

def get_path_dfs_helper(path_collect_list: list, input_path: str, deep: int):
    if not os.path.exists(input_path):
        print(f'目录不存在:{input_path}')
        return
    if deep > 10:
        return
    if os.path.isfile(input_path):
        path_collect_list.append(input_path)
        return
    files = os.listdir(input_path)
    for file in files:
        f_abs = os.path.join(input_path, file)
        get_path_dfs_helper(path_collect_list, f_abs, deep + 1)

这段代码会递归地搜索目录,获取所有文件的路径。

3. 转换缓存文件为MP3

网易云的缓存文件是.uc格式,我们需要将其转换为.mp3格式。

def convert_uc_to_mp3(input_dir: str, output_dir: str):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    cache_file_list = []
    get_path_dfs_helper(cache_file_list, input_dir, 0)
    for f in cache_file_list:
        if not f.endswith('.uc'):
            continue
        file_name = os.path.basename(f)
        print(f'文件:{os.path.basename(f)}-->{os.path.getsize(f)}字节')
        with open(f, mode='rb+') as fr:
            data_bytes = fr.read()
            file_name = file_name[:-3] + '.mp3'
            output_file_abs_path = os.path.join(output_dir, file_name)
            if os.path.exists(output_file_abs_path):
                continue
            with open(output_file_abs_path, 'wb+') as fw:
                convert_list = list()
                for data in data_bytes:
                    result = data ^ 0xA3
                    convert_list.append(result)
                fw.write(bytes(convert_list))

这段代码的核心是XOR运算,用于将.uc文件转为.mp3文件。

4. 使用方法

def test_function():
    input_cache_dir = r'F:\99.OtherSoftwareCache\Netease\CloudmusicCache\Cache'
    output_dir = r'F:\99.OtherSoftwareCache\ConvertToMp3'
    convert_uc_to_mp3(input_cache_dir, output_dir)

if __name__ == '__main__':
    test_function()

只需要修改input_cache_diroutput_dir这两个路径,然后运行上述代码,即可将缓存文件转为MP3。

结尾

音乐是我们生活中的调味品,它能带给我们快乐和激情。希望这篇教程能够帮助到喜欢音乐的你,让你随时随地都能欣赏到美妙的旋律。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何使用Python获取局域网内的IP与MAC地址

2023-10-10 10:25:19

指数词

gai.conf配置文件详解

2023-10-10 10:36:15

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索