Amazing-Python-Scripts
119 строк · 3.1 Кб
1from tkinter import *2from moviepy.editor import VideoFileClip3from moviepy.editor import AudioFileClip4from tkinter import filedialog5from tkinter import messagebox6from tkinter import ttk7from fpdf import FPDF8import threading9import speech_recognition as sr10import os11
12
13# variables
14video_clip = ''15audio_clip = ''16
17# function to get video
18
19
20def get_video():21global video_filepath, video_clip22try:23video_filepath.set(filedialog.askopenfilename(24title="Select your video file"))25video_clip = VideoFileClip(str(video_filepath.get()))26except:27messagebox.showerror("Error", "No video selected")28
29
30# function to convert audio to pdf
31def audio_to_pdf():32global audio_clip33try:34audio_clip = video_clip.audio.write_audiofile(r"my_audio.wav")35r = sr.Recognizer()36with sr.AudioFile("my_audio.wav") as source:37audio_data = r.record(source)38text = r.recognize_google(audio_data)39write_file = open('my_text.txt', 'w')40write_file.write(text)41write_file.close()42text_to_pdf('my_text.txt')43messagebox.showinfo("Message", "Conversion Successfull")44except:45messagebox.showerror("Error", "Conversion not performed")46
47video_filepath.set('')48
49progress_bar['value'] = 050progress_bar.stop()51
52os.remove("my_audio.wav")53os.remove("my_text.txt")54
55# function to convert text to pdf
56
57
58def text_to_pdf(file):59pdf = FPDF(format='letter', unit='in')60pdf.add_page()61pdf.set_font("Arial", size=12)62effective_page_width = pdf.w - 2*pdf.l_margin63
64f = open(file, "r")65
66for x in f:67pdf.multi_cell(effective_page_width, 0.15, x)68pdf.ln(0.5)69
70pdf.output("../Video to PDF/my_pdf.pdf")71
72
73# function to run the script
74def run():75global progress_bar76t1 = threading.Thread(target=progress_bar.start)77t2 = threading.Thread(target=audio_to_pdf)78t2.start()79t1.start()80
81
82# GUI CODE
83# Intializing main program settings
84root = Tk()85root.title("Video to PDF Converter")86
87# Variables for file paths
88video_filepath = StringVar()89
90# Creating UI Frame
91UI_frame = Frame(root, width=500, height=500, relief="raised")92UI_frame.grid(row=0, column=0)93
94convert_frame = Frame(root, width=500, height=500, relief="raised")95convert_frame.grid(row=1, column=0)96
97# Labels and buttons
98select = Label(UI_frame, text="Select Video : ", font=("Arial", 12))99select.grid(row=1, column=1, padx=5, pady=5, sticky=W)100
101browse = Button(UI_frame, text="Browse", command=get_video, font=("Arial", 12))102browse.grid(row=1, column=2, padx=5, pady=5)103
104video_selected = Label(UI_frame, text="Selected video : ", font=("Arial", 12))105video_selected.grid(row=2, column=1, padx=5, pady=5, sticky=E)106
107video_path = Label(UI_frame, textvariable=video_filepath)108video_path.grid(row=2, column=2, padx=2, pady=5, sticky=W)109
110convert = Button(convert_frame, text="Convert",111command=run, font=("Arial", 12))112convert.grid(row=3, column=1, pady=5)113
114progress_bar = ttk.Progressbar(115root, orient=HORIZONTAL, mode='indeterminate', length=500)116progress_bar.grid(padx=25, pady=25)117
118# Calling main program
119root.mainloop()120