Python添加flac文件标签并实现wav转flac

在网上下载了flac格式的无损音乐专辑,但是标签都是乱码或者是空白,在播放器里不能连续的播放,显示的都是未知艺术家,看的我强迫症都犯了。我还顺便将.wmv转成了.flac,但是需要安装ffmpeg,具体的安装方法可以看这个链接https://blog.csdn.net/qq_30091945/article/details/81154014

我直接用了ffmpeg里的命令来转换,但是发现文件命令里不能有空格,还得重命名一下。我把代码存一下,省的以后找不到。

from mutagen.flac import FLAC
import os


def flac_process(file_dir, info):
    audio = FLAC(file_dir)

    audio["TITLE"] = info['TITLE']
    audio["ARTIST"] = info['ARTIST']
    audio["ALBUMARIST"] = info['ALBUMARIST']
    audio["ALBUM"] = info['ALBUM']
    audio["DATE"] = info['DATE']
    audio["GENRE"] = info['GENRE']
    audio["TRACKNUMBER"] = info['TRACKNUMBER']
    audio.pprint()
    audio.save()


def wav_to_flac(file_dir):
    save_dir = file_dir.replace('.wav', '.flac')
    cmd = 'ffmpeg -i ' + file_dir + ' ' + save_dir
    print(cmd)
    os.system(cmd)


def file_rename(file_dir):
    rename_dir = file_dir.replace(' ', '_')
    os.rename(file_dir, rename_dir)


if __name__ == "__main__":

    os.chdir(r'C:/Users/15323/Music/邓紫棋/G.E.M.-新的心跳 - 副本/')
    input_dir = os.getcwd()

    for file in os.listdir(input_dir):
        file_rename(file)

    for file in os.listdir(input_dir):
        if file.split('.')[-1] == 'wav':
            wav_to_flac(file)

    for file in os.listdir(input_dir):
        if file.split('.')[-1] == 'flac':
            file_name = file.split('.')[0]
            name = file_name[3:]
            number = file_name[:2]

            info = {
                'TITLE': name,
                'ARTIST': u'邓紫棋',
                'ALBUMARIST': u'邓紫棋',
                'ALBUM': u'新的心跳',
                'DATE': '2015',
                'GENRE': 'Pop',
                'TRACKNUMBER': number
            }
            print(info)

            flac_process(file, info)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这是一段遍历文件夹内的 wavflac 后缀文件python 代码,并获取其文件名、上层目录、文件后缀和路径的代码: ``` import os def get_file_info(root_dir): for root, dirs, files in os.walk(root_dir): for file in files: if file.endswith('.wav') or file.endswith('.flac'): file_path = os.path.join(root, file) file_dir = os.path.dirname(file_path) file_ext = os.path.splitext(file)[1] file_name = os.path.splitext(file)[0] print("文件名:", file_name) print("上层目录:", file_dir) print("文件后缀:", file_ext) print("路径:", file_path) print("\n") root_dir = "/path/to/your/directory" get_file_info(root_dir) ``` 需要注意的是,请把 `/path/to/your/directory` 替换为自己想要遍历的文件夹路径。 ### 回答2: 使用Python可以使用os模块对文件文件夹进行遍历。你可以使用以下代码实现遍历文件夹里面的.wav和.flac后缀文件,并获取它们的文件名、上层目录、文件后缀和路径: ```python import os # 指定文件夹路径 folder_path = "your_folder_path" # 遍历文件夹及其子文件夹下所有文件 for root, dirs, files in os.walk(folder_path): for file in files: # 获取文件的完整路径 file_path = os.path.join(root, file) # 获取文件后缀名 file_extension = os.path.splitext(file)[-1] # 获取文件名 file_name = os.path.splitext(file)[0] # 获取上层目录 parent_directory = os.path.basename(root) # 判断文件后缀是否为.wav或.flac if file_extension == ".wav" or file_extension == ".flac": print("文件名:", file_name) print("上层目录:", parent_directory) print("文件后缀:", file_extension) print("路径:", file_path) ``` 请注意替换代码中的`your_folder_path`为你要遍历的文件夹的路径。运行上述代码,将会输出符合条件的.wav和.flac后缀文件文件名、上层目录、文件后缀和路径。 ### 回答3: 你可以使用Python的os模块来实现遍历文件夹,并使用os.path模块来获取文件名、上层目录、文件后缀和路径。以下是一个示例代码: ```python import os def traverse_folder(folder_path): for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith(".wav") or file.endswith(".flac"): file_path = os.path.join(root, file) file_name = os.path.splitext(file)[0] upper_dir = os.path.dirname(root) file_extension = os.path.splitext(file)[1] print("文件名:", file_name) print("上层目录:", os.path.basename(upper_dir)) print("文件后缀:", file_extension) print("路径:", file_path) # 使用示例 folder_path = "/path/to/your/folder" traverse_folder(folder_path) ``` 在这个例子中,`traverse_folder()`函数以文件夹路径作为参数,使用`os.walk()`遍历该文件夹及其子文件夹。然后,对于每个文件,检查文件是否以".wav"或".flac"结尾,如果是则获取文件名、上层目录、文件后缀以及完整路径,最后打印这些信息。 你只需将"/path/to/your/folder"替换为实际的文件夹路径,代码将会遍历该文件夹并输出相应的文件信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值