Amazing-Python-Scripts

Форк
0
119 строк · 3.1 Кб
1
from tkinter import *
2
from moviepy.editor import VideoFileClip
3
from moviepy.editor import AudioFileClip
4
from tkinter import filedialog
5
from tkinter import messagebox
6
from tkinter import ttk
7
from fpdf import FPDF
8
import threading
9
import speech_recognition as sr
10
import os
11

12

13
# variables
14
video_clip = ''
15
audio_clip = ''
16

17
# function to get video
18

19

20
def get_video():
21
    global video_filepath, video_clip
22
    try:
23
        video_filepath.set(filedialog.askopenfilename(
24
            title="Select your video file"))
25
        video_clip = VideoFileClip(str(video_filepath.get()))
26
    except:
27
        messagebox.showerror("Error", "No video selected")
28

29

30
# function to convert audio to pdf
31
def audio_to_pdf():
32
    global audio_clip
33
    try:
34
        audio_clip = video_clip.audio.write_audiofile(r"my_audio.wav")
35
        r = sr.Recognizer()
36
        with sr.AudioFile("my_audio.wav") as source:
37
            audio_data = r.record(source)
38
            text = r.recognize_google(audio_data)
39
            write_file = open('my_text.txt', 'w')
40
            write_file.write(text)
41
            write_file.close()
42
            text_to_pdf('my_text.txt')
43
        messagebox.showinfo("Message", "Conversion Successfull")
44
    except:
45
        messagebox.showerror("Error", "Conversion not performed")
46

47
    video_filepath.set('')
48

49
    progress_bar['value'] = 0
50
    progress_bar.stop()
51

52
    os.remove("my_audio.wav")
53
    os.remove("my_text.txt")
54

55
# function to convert text to pdf
56

57

58
def text_to_pdf(file):
59
    pdf = FPDF(format='letter', unit='in')
60
    pdf.add_page()
61
    pdf.set_font("Arial", size=12)
62
    effective_page_width = pdf.w - 2*pdf.l_margin
63

64
    f = open(file, "r")
65

66
    for x in f:
67
        pdf.multi_cell(effective_page_width, 0.15, x)
68
        pdf.ln(0.5)
69

70
    pdf.output("../Video to PDF/my_pdf.pdf")
71

72

73
# function to run the script
74
def run():
75
    global progress_bar
76
    t1 = threading.Thread(target=progress_bar.start)
77
    t2 = threading.Thread(target=audio_to_pdf)
78
    t2.start()
79
    t1.start()
80

81

82
# GUI CODE
83
# Intializing main program settings
84
root = Tk()
85
root.title("Video to PDF Converter")
86

87
# Variables for file paths
88
video_filepath = StringVar()
89

90
# Creating UI Frame
91
UI_frame = Frame(root, width=500, height=500, relief="raised")
92
UI_frame.grid(row=0, column=0)
93

94
convert_frame = Frame(root, width=500, height=500, relief="raised")
95
convert_frame.grid(row=1, column=0)
96

97
# Labels and buttons
98
select = Label(UI_frame, text="Select Video : ", font=("Arial", 12))
99
select.grid(row=1, column=1, padx=5, pady=5, sticky=W)
100

101
browse = Button(UI_frame, text="Browse", command=get_video, font=("Arial", 12))
102
browse.grid(row=1, column=2, padx=5, pady=5)
103

104
video_selected = Label(UI_frame, text="Selected video : ",  font=("Arial", 12))
105
video_selected.grid(row=2, column=1, padx=5, pady=5, sticky=E)
106

107
video_path = Label(UI_frame, textvariable=video_filepath)
108
video_path.grid(row=2, column=2, padx=2, pady=5, sticky=W)
109

110
convert = Button(convert_frame, text="Convert",
111
                 command=run,  font=("Arial", 12))
112
convert.grid(row=3, column=1, pady=5)
113

114
progress_bar = ttk.Progressbar(
115
    root, orient=HORIZONTAL, mode='indeterminate', length=500)
116
progress_bar.grid(padx=25, pady=25)
117

118
# Calling main program
119
root.mainloop()
120

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.