import tkinter as tk
from tkinter import filedialog, messagebox
import os
import hashlib
import random
import shutil
def calculate_md5(file_path):
hash_md5 = hashlib.md5()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
def modify_mp4(file_path):
with open(file_path, "ab") as f:
f.write(os.urandom(random.randint(100, 1000)))
def process_files(input_folder, output_folder, text_output):
if not input_folder or not output_folder:
messagebox.showerror("错误", "请选择输入及输出路径!")
return
if not os.path.exists(output_folder):
os.makedirs(output_folder)
text_output.delete('1.0', tk.END)
for file_name in os.listdir(input_folder):
if file_name.endswith(".mp4"):
input_file_path = os.path.join(input_folder, file_name)
output_file_path = os.path.join(output_folder, file_name)
original_md5 = calculate_md5(input_file_path)
modify_mp4(input_file_path)
modified_md5 = calculate_md5(input_file_path)
shutil.copyfile(input_file_path, output_file_path)
text_output.insert(tk.END, f"文件名称: {file_name}\n")
text_output.insert(tk.END, f"原本的MD5: {original_md5}\n")
text_output.insert(tk.END, f"修改后的MD5: {modified_md5}\n")
text_output.insert(tk.END, f"储存路径: {output_file_path}\n\n")
messagebox.showinfo("操作完成", "所有视频文件的MD5已被修改完毕!")
root = tk.Tk()
root.title("MP4视频MD5_Calculator")
input_folder = ""
output_folder = ""
def open_folder():
global input_folder
input_folder = filedialog.askdirectory(title="选择放有视频的文件夹")
input_folder_label.config(text=input_folder)
def select_output_folder():
global output_folder
output_folder = filedialog.askdirectory(title="选择输出视频的文件夹")
output_folder_label.config(text=output_folder)
input_folder_btn = tk.Button(root, text="打开放有视频的文件夹", command=open_folder)
input_folder_btn.pack()
input_folder_label = tk.Label(root, text="Input Folder: ")
input_folder_label.pack()
output_folder_btn = tk.Button(root, text="选择输出视频的文件夹", command=select_output_folder)
output_folder_btn.pack()
output_folder_label = tk.Label(root, text="Output Folder: ")
output_folder_label.pack()
text_output = tk.Text(root)
text_output.pack()
process_btn = tk.Button(root, text="更改MP4视频文件MD5", command=lambda: process_files(input_folder, output_folder, text_output))
process_btn.pack()
root.mainloop()