2025年6月4日 星期三 乙巳(蛇)年 三月初八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

用AI写了一个获取音乐tag信息批量重命名的工具

时间:05-12来源:作者:点击数:57

今天在网上搜无损音乐的时候,发现下载后名字都是乱码,后面想了一下一个一个改要疯掉。

就想到用程序,可是我不会编程啊。但是我转眼一想,AI会呀,哈哈。

直接给需求:

1、选择一个文件夹,将对文件夹内所有的音乐文件进行处理。

2、获取文件夹内所有歌曲的tag信息。

3、用获取到的tag信息使用Title、Artist信息对该文件进行重命名。格式为Title-Artist,

4、将以上的功能整合到一个UI界面

不得不说AI很强大啊。

支持格式:mp3、m4a、flac

虽然有bug但是还是实现了我的需求。

大佬勿喷有需要的自取。有问题的不要问我哈,我也不知道,你们直接问AI

顺便让AI教我打包了exe文件。不知道你们能不能运行。

https://wwlk.lanzoum.com/i4MZx0u39g4d

密码:52pj

  • import os
  • import tkinter as tk
  • import tkinter.filedialog as filedialog
  • import taglib
  • class MusicTagRenamer:
  • def __init__(self, master):
  • self.master = master
  • self.master.title("音频文件获取标签信息批量重命名")
  • self.master.geometry("500x400")
  • # 选择目标目录的按钮和标签
  • self.select_dir_button = tk.Button(self.master, text="选择文件夹",
  • command=self.choose_directory)
  • self.select_dir_button.pack(pady=10)
  • self.selected_dir_label = tk.Label(self.master, text="")
  • self.selected_dir_label.pack()
  • # 显示获取到的标签信息的列表框
  • self.tag_listbox = tk.Listbox(self.master, width=60)
  • self.tag_listbox.pack(pady=10)
  • # 命名格式的下拉列表
  • self.name_format = tk.StringVar()
  • self.name_format.set("格式")
  • self.format_dropdown = tk.OptionMenu(
  • self.master, self.name_format, "Title - Artist"
  • )
  • self.format_dropdown.pack()
  • # 重命名文件的按钮
  • self.rename_button = tk.Button(self.master, text="重命名",
  • command=self.rename_files)
  • self.rename_button.pack(pady=10)
  • def choose_directory(self):
  • """
  • 选择目标文件夹
  • """
  • dir_path = filedialog.askdirectory(title="选择音乐文件所在的文件夹")
  • if dir_path:
  • self.target_dir = dir_path
  • self.selected_dir_label.config(text=self.target_dir)
  • # 获取标签信息并显示在列表框中
  • self.tag_dict = {}
  • self.tag_listbox.delete(0, tk.END)
  • music_files = [f for f in os.listdir(self.target_dir) if f.endswith(".mp3") or f.endswith(".m4a") or f.endswith(".flac")]
  • for file in music_files:
  • file_path = os.path.join(self.target_dir, file)
  • music = taglib.File(file_path)
  • current_title = music.tags.get("TITLE", ["未知标题"])[0]
  • current_artist = music.tags.get("ARTIST", ["未知艺术家"])[0]
  • current_album = music.tags.get("ALBUM", ["未知专辑"])[0]
  • self.tag_dict[file] = {"Title": current_title, "Artist": current_artist, "Album": current_album}
  • title_str = f"Title: {current_title}, Artist: {current_artist}, Album: {current_album}"
  • self.tag_listbox.insert(tk.END, f"{file}: {title_str}")
  • music.close()
  • def rename_files(self):
  • """
  • 对文件进行重命名
  • """
  • name_format = self.name_format.get()
  • for file, tags in self.tag_dict.items():
  • if name_format.startswith('《') and name_format.endswith('》-Artist'):
  • new_file_name = name_format.replace("《Title》", tags["Title"]).replace("-Artist", f"-{tags['Artist']}")
  • elif name_format == "Title - Artist":
  • new_file_name = f"{tags['Title']} - {tags['Artist']}"
  • else:
  • new_file_name = name_format
  • _, ext = os.path.splitext(file)
  • new_file_path = os.path.join(self.target_dir, f"{new_file_name}{ext}")
  • os.rename(os.path.join(self.target_dir, file), new_file_path)
  • # 更新标签信息字典
  • self.tag_dict[new_file_name + ext] = tags
  • del self.tag_dict[file]
  • # 更新列表中的标签信息
  • idx = self.tag_listbox.get(0, tk.END).index(f"{file}: Title: {tags['Title']}, Artist: {tags['Artist']}, Album: {tags['Album']}")
  • new_title_str = f"Title: {tags['Title']}, Artist: {tags['Artist']}, Album: {tags['Album']}"
  • self.tag_listbox.delete(idx)
  • self.tag_listbox.insert(idx, f"{new_file_name + ext}: {new_title_str}")
  • def run(self):
  • """
  • 运行程序
  • """
  • self.master.mainloop()
  • if __name__ == '__main__':
  • root = tk.Tk()
  • app = MusicTagRenamer(root)
  • app.run()

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门