import moviepy.editor as mp import tkinter as tk import tkinter.filedialog import os import sys # “转换”按钮,FLV转换为MP3文件 def convert(): # 先设置源文件夹、目标文件夹为空。 source_address = ‘‘ target_address = ‘‘ if en1.get() == "": t1.insert(‘end‘, ‘请选择源文件夹!\n‘) t1.update() # 移动滚动条,t1能显示最新内容。 t1.yview_moveto(1) else: source_address = f‘{en1.get()}‘ if en2.get() == "": t1.insert(‘end‘, ‘请选择目标文件夹!\n‘) t1.update() # 移动滚动条,t1能显示最新内容。 t1.yview_moveto(1) else: target_address = f‘{en2.get()}‘ # 源文件夹、目标文件夹非空,获取文件并转换。 if source_address != ‘‘ and target_address != ‘‘: # 获取指定目录下的所有文件 file_list = os.listdir(source_address) for file_address in file_list: # 获取文件的绝对路径(不包含后缀.flv) file_name = file_address.split(‘.‘)[0] # 拼接文件的绝对路径(dir+xxx.flv) file_address = os.path.join(source_address, file_address) # print(‘需要转换的文件>>>>>>>‘ + file_address) t1.insert(‘end‘, f‘需要转换的文件>>>>>>>{file_address}\n‘) t1.update() # 移动滚动条,t1能显示最新内容。 t1.yview_moveto(1) # 调用moviepy库的方法 clip = mp.AudioFileClip(file_address) # 拼接转换后的文件路径 file_name = file_name + ‘.mp3‘ out_address = os.path.join(target_address, file_name) # print(‘转换后的文件>>>>>>>>‘ + out_address) t1.insert(‘end‘, f‘转换后的文件>>>>>>>>{out_address}\n‘) t1.insert(‘end‘, f‘正在转换...........\n‘) t1.update() # 移动滚动条,t1能显示最新内容。 t1.yview_moveto(1) # 转换FLV,同时保存为mp3音频文件 clip.write_audiofile(out_address) t1.insert(‘end‘, f‘转换结束!\n‘) t1.update() # 移动滚动条,t1能显示最新内容。 t1.yview_moveto(1) # 选择源文件夹 def select_s(): foldername = tkinter.filedialog.askdirectory() if foldername != ‘‘: en1.insert(0, foldername) # # 选择目标文件夹 def select_t(): foldername = tkinter.filedialog.askdirectory() if foldername != ‘‘: en2.insert(0, foldername) # “退出”按钮,退出程序 def exit_sys(): sys.exit() if __name__ == ‘__main__‘: fm_main = tk.Tk() fm_main.title("FLV批量转换为MP3_v1.0") # 获取显示区域的宽度 screenWidth = fm_main.winfo_screenwidth() # 获取显示区域的高度 screenHeight = fm_main.winfo_screenheight() # 设置窗口宽度 width = 586 # 设置窗口高度 height = 402 left = (screenWidth - width) / 2 top = (screenHeight - height) / 2 # 宽度x高度+x偏移+y偏移 # 在设定宽度和高度的基础上指定窗口相对于屏幕左上角的偏移位置 # fm_main.geometry(‘586x492‘) fm_main.geometry(‘%dx%d+%d+%d‘ % (width, height, left, top)) fm_main.resizable(0, 0) # 设置窗口大小不可变 # v2 = tk.StringVar() lb1 = tk.Label(fm_main, text="请输入要转换的FLV文件路径:").grid(row=0, column=0, sticky=tk.W) # sticky=N + E + W,在水平、垂直方向上延伸,填满整个单元格 en1 = tk.Entry(fm_main) en1.grid(row=0, column=1, sticky=tk.N + tk.E + tk.W) lb2 = tk.Label(fm_main, text="请输入目标文件存放路径:") lb2.grid(row=1, column=0, sticky=tk.W) en2 = tk.Entry(fm_main) en2.grid(row=1, column=1, sticky=tk.N + tk.E + tk.W) b1 = tk.Button(fm_main, text=‘...‘, command=select_s) b1.grid(row=0, column=2, sticky=tk.N + tk.E + tk.W) b2 = tk.Button(fm_main, text=‘...‘, command=select_t) b2.grid(row=1, column=2, sticky=tk.N + tk.E + tk.W) b3 = tk.Button(fm_main, text=‘转换‘, command=convert) b3.grid(row=4, column=0, sticky=tk.N + tk.E + tk.W) b4 = tk.Button(fm_main, text=‘退出‘, command=exit_sys) b4.grid(row=4, column=1, sticky=tk.N + tk.E + tk.W) # columnspan=2,表示t1占用0,1二列 t1 = tk.Text(fm_main) t1.grid(row=7, column=0, columnspan=2, sticky=tk.N + tk.E + tk.W) # 创建滚动条 scroll = tk.Scrollbar(orient="vertical", command=t1.yview) # 将滚动条填充 t1.config(yscrollcommand=scroll.set) scroll.grid(row=7, column=2, sticky=tk.S + tk.W + tk.E + tk.N) # 将滚动条与文本框关联 scroll[‘command‘] = t1.yview # scroll.config(command=t1.yview) # 将滚动条填充 t1.config(yscrollcommand=scroll.set) fm_main.mainloop()
原文:https://www.cnblogs.com/lqsj2018/p/14363073.html