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

查看 54|回复 3
作者:icxz   
今天在网上搜无损音乐的时候,发现下载后名字都是乱码,后面想了一下一个一个改要疯掉。
就想到用程序,可是我不会编程啊。但是我转眼一想,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
[Python] 纯文本查看 复制代码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()

重命名, 信息

Joshon   
不如授人以渔,这个AI怎么进
icxz
OP
  

Joshon 发表于 2023-4-28 10:18
不如授人以渔,这个AI怎么进

https://chat11.yqcloud.top/我用的是这个
Joshon   

icxz 发表于 2023-4-28 10:24
https://chat11.yqcloud.top/我用的是这个

回去试下,感谢
您需要登录后才可以回帖 登录 | 立即注册

返回顶部