首页 > 编程语言 >python3脚本批量重命名歌曲文件

python3脚本批量重命名歌曲文件

时间:2024-08-22 17:15:50浏览次数:15  
标签:重命名 filepath 批量 title format artist choice os python3

场景:歌曲文件名有些混乱

 

于是想用个脚本批量重命名这些歌曲文件,可以选择【歌曲名 - 歌手】或【歌手 - 歌曲名】规范这些文件名

脚本如下:

import os
import re 
from mutagen.id3 import ID3, TIT2, TPE1
from mutagen.mp4 import MP4

# 替换后歌手分隔符
REPLACEMENT_STRING = '_'
# 需要被替换掉分隔符
CHARACTERS_TO_REPLACE = ['&', ',', ',',' /', '/']

def replace_characters_in_string(s):
    # 替换字符串中的指定字符
    for char in CHARACTERS_TO_REPLACE:
        s = s.replace(char, REPLACEMENT_STRING)
    return s

def get_title_and_artist(filepath):
    """获取歌曲标题和艺术家"""
    if filepath.lower().endswith('.mp3'):
        audio = ID3(filepath)
        title = audio.get('TIT2', None)
        artist = audio.get('TPE1', None)
        if title and artist:
            return title.text[0], artist.text[0]
    elif filepath.lower().endswith('.m4a'):
        audio = MP4(filepath)
        title = audio.get('\xa9nam', None)
        artist = audio.get('\xa9ART', None)
        if title and artist:
            return title[0], artist[0]
    return None, None

def rename_file(filepath, format_choice):
    """重命名文件"""
    title, artist = get_title_and_artist(filepath)
    if title and artist:
        # 替换掉歌手中非法字符
        artist = replace_characters_in_string(artist)
        # 根据格式选择构建新的文件名
        if format_choice == '1':
            new_name = f"{title} - {artist}"
        elif format_choice == '2':
            new_name = f"{artist} - {title}"
        else:
            print("Invalid format choice. Please choose 1 or 2.")
            return

        # 生成新的文件路径
        dir_name = os.path.dirname(filepath)
        new_filepath = os.path.join(dir_name, f"{new_name}{os.path.splitext(filepath)[1]}")
        # 重命名文件
        os.rename(filepath, new_filepath)
        print(f'Renamed file: {filepath} -> {new_filepath}')
    else:
        print(f'Failed to get title or artist for file: {filepath}')

def process_directory(directory, format_choice):
    """遍历目录并重命名文件"""
    for root, dirs, files in os.walk(directory):
        for file in files:
            filepath = os.path.join(root, file)
            if file.lower().endswith(('.mp3', '.m4a')):
                rename_file(filepath, format_choice)

if __name__ == "__main__":
    directory = input("Enter the directory path to process: ")
    format_choice = input("Choose the renaming format:\n1. Song Title - Artist\n2. Artist - Song Title\nEnter 1 or 2: ")
    process_directory(directory, format_choice)

 

效果如下:

 

标签:重命名,filepath,批量,title,format,artist,choice,os,python3
From: https://www.cnblogs.com/xiaomaju/p/18374326

相关文章

  • Python 实现批量数字二维码生成器
    Python实现批量数字二维码生成器创建时间:2024-08-09一、背景手动逐个生成特定格式和内容的二维码是一项繁琐且耗时的任务。虽然有写二维码工具也可以制作,但是往往有一些限制,为了能够高效、批量生成自定义二维码的需求,开发了这个基于Python的数字二维码生成器应用程序。在实......
  • 最新小红书矩阵批量起号玩全自动图文法,无脑操作轻松引流创业粉
    项目介绍:很多人对于引流觉得很难每天都在网上找各种各样的教程那么今天流量终结者来了小红书图文矩阵批量制作软件加小红书号商+流量回收渠道全都给你带来了这套玩法是我们一直以来自己使用的玩法相对其他引流方法这个是上量最快的也是玩法最简单的,这个软件可以给......
  • 批量图像识别的快速遍历技巧
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言最近,不少同学在Q群中频繁提出疑问:在日常UI测试过程中,如何快速准确地识别页面上的多个元素,或在日常测试中,如何高效地遍历目标图片列表,以确认画面中是否包......
  • 【Advanced Renamer】,批量修改文件名,啥都能改的神器!
    最近有朋友问有没有可能批量修改文件、文件夹名字的工具?好多人都吐槽,下载资源的时候都有一堆引流的后缀,想直接下载到本地后批量修改。这里从解决实际问题的角度上,给你大家带来一款知名最高的“批量修改文件名”的小工具:【AdvancedRenamer】资源在文末。在Windows种,通过快......
  • 豆瓣评分9.0!Python3网络爬虫开发实战,堪称教学典范!
    今天我们所处的时代是信息化时代,是数据驱动的人工智能时代。在人工智能、物联网时代,万物互联和物理世界的全面数字化使得人工智能可以基于这些数据产生优质的决策,从而对人类的生产生活产生巨大价值。在这个以数据驱动为特征的时代,数据是最基础的。数据既可以通过研发产品获得,......
  • ffmpeg批量mov转换mp4格式脚本
    vim convertMP4.sh 输入脚本:#!/bin/bash#检查是否提供了输入目录路径if[-z"$1"];thenecho"Usage:$0<input_directory>"exit1fi#获取输入目录路径input_directory="$1"#检查输入目录是否存在if[!-d"$input_directory"];......
  • 【实用】【一眼就会】【直接可用】文件上传 附件上传 前后端分离 分布式 多文件上传
    思路:1、先保存主要信息,存到数据库。2、查询这条数据的id、uid3、上传附件功能:根据id、uid、文件。请求:附件API接口。4、后端接口中:先判断登录状态,5、创建对应的文件夹并存入文件,文件夹名以id名命名。6、把附件名重命名,以uuid命名。7、把所有的文件路径放到集合里,传入id......
  • jmeter如何产生批量数据?
    在使用jmeter时,若需要产生批量数据,可以通过连接数据库--执行相关sql进行操作,例如添加20条数据步骤:1.添加jdbc数据库配置信息2.添加循环控制器(循环次数20)3.循环控制器子级添加计数器(从1开始递增),计数器变量设置为n4.循环控制器子级添加jdbcrequest,QueryType选择upd......
  • unbuntu更新Python3版本到最新,安装依赖手动编译
    安装依赖sudoaptupdatesudoaptinstallbuild-essentialzlib1g-devlibffi-devlibssl-dev下载安装包,手动配置编译官网查找对应linux版本tgz包wgethttps://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgztar-xzvfPython-3.11.0.tgzcdPython-3.11.0......
  • 批量创建/删除用户
    #!/bin/bashread-p"请输入你想创建用户的前缀:"prefix[-z$prefix]&&echo"必须输入前缀"&&exit #控制前缀不能为空[[!$prefix=~^[a-Z]+$]]&&echo"请输入正确的前缀"&&exit #控制前缀为字母read-p"请输入你想创建用户的个数:"......