import os
import tkinter as tk
from tkinter import filedialog
from ncmdump import dump
import threading
# 定义一个函数,用于选择输入文件夹
def select_input():
global input_path # 定义一个全局变量,用于存储输入文件夹的路径
input_path = filedialog.askdirectory() # 弹出一个对话框,让用户选择输入文件夹
input_label.config(text=input_path) # 更新输入文件夹的标签
# 定义一个函数,用于选择输出文件夹
def select_output():
global output_path # 定义一个全局变量,用于存储输出文件夹的路径
output_path = filedialog.askdirectory() # 弹出一个对话框,让用户选择输出文件夹
output_label.config(text=output_path) # 更新输出文件夹的标签
# 定义一个函数,用于遍历输入文件夹内所有的后缀为ncm的音乐,并转换成MP3格式并保存到输出文件夹
def convert():
if input_path and output_path: # 如果输入文件夹和输出文件夹都已经选择
for file in os.listdir(input_path): # 遍历输入文件夹内的所有文件
info_label.config(text="正在转换:" + file) # 更新信息标签,显示正在转换的文件名
if file.endswith(".ncm"): # 如果文件的后缀是ncm
file_path = os.path.join(input_path, file) # 获取文件的完整路径
dump(file_path) # 调用ncmdump模块的dump函数,将ncm文件转换成MP3格式并保存到输出文件夹
# info_label.config(text="转换完成!") # 更新信息标签,显示转换完成
else: # 如果输入文件夹或输出文件夹没有选择
info_label.config(text="请先选择输入文件夹和输出文件夹!") # 更新信息标签,提示用户先选择输入文件夹和输出文件夹
# 将输入文件夹中的MP3文件移动到输出文件夹
for file in os.listdir(input_path): # 遍历输入文件夹内的所有文件
if file.endswith(".mp3") or file.endswith(".flac"): # 如果文件的后缀是mp3或flac
info_label.config(text="转换完成,正在移动文件:" + file) # 更新信息标签,显示正在移动的文件名
file_path = os.path.join(input_path, file) # 获取文件的完整路径
try:
os.rename(file_path, os.path.join(output_path, file)) # 将文件移动到输出文件夹
# 如果文件已经存在,就覆盖
except FileExistsError:
os.remove(os.path.join(output_path, file))
os.rename(file_path, os.path.join(output_path, file))
info_label.config(text="完成!") # 更新信息标签,显示转换完成
def convert_thread():
t = threading.Thread(target=convert)
t.start()
# 创建一个tkinter窗口
window = tk.Tk()
window.title("ncm转mp3软件-qq 915471697") # 设置窗口的标题
window.geometry("400x200") # 设置窗口的大小
# 创建一个输入文件夹的标签,并放置在窗口中
input_label = tk.Label(window, text="请选择输入文件夹")
input_label.pack()
# 创建一个按钮,用于选择输入文件夹,并放置在窗口中
input_button = tk.Button(window, text="选择", command=select_input)
input_button.pack()
# 创建一个输出文件夹的标签,并放置在窗口中
output_label = tk.Label(window, text="请选择输出文件夹")
output_label.pack()
# 创建一个按钮,用于选择输出文件夹,并放置在窗口中
output_button = tk.Button(window, text="选择", command=select_output)
output_button.pack()
# 创建一个按钮,用于开始转换,并放置在窗口中
convert_button = tk.Button(window, text="开始转换", command=convert_thread)
convert_button.pack()
# 创建一个信息标签,用于显示转换进度或提示信息,并放置在窗口中
info_label = tk.Label(window, text="")
info_label.pack()
# 启动tkinter主循环,显示窗口并等待用户操作
window.mainloop()
网易云vip歌曲格式转换源码
最新推荐文章于 2024-03-28 09:59:41 发布