-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
162 lines (114 loc) · 27.6 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import os
from pathlib import Path
import PySimpleGUI as sg # Part 1 - The import
import subprocess
from pytube import YouTube
# misc
import shutil
import math
import datetime
# plots
import matplotlib.pyplot as plt
# image operation
import cv2
import sys
import threading
import time
sg.theme('Dark Red 1')
# Define the window's contents
layout = [ [sg.Text("Youtube Video Link")], # Part 2 - The Layout
[sg.Input()],
[sg.Button('Cancel'),sg.Button('Continue')] ]
# Create the window
window = sg.Window('Youtube Video Converter', layout) # Part 3 - Window Defintion
# Display and interact with the Window
event, values = window.read() # Part 4 - Event loop or Window.read call
# Finish up by removing from the screen
window.close() # Part 5 - Close the Window
if event == "Cancel":
sys.exit()
resolutions = ["1080","720","480","360","240"]
#download folder
SAVE_PATH = str(os.path.join(Path.home(), "Downloads"))
# create the instance of the YouTube class
video = YouTube(values[0])
# Define the window's contents
layout = [ [sg.Text('Resolution') ], # Part 2 - The Layout
[sg.DropDown(resolutions)],
[sg.Text('')],
[sg.Text('Video Summary')],
[sg.Text(f'Title: {video.title}')],
[sg.Text(f'Duration: {video.length / 60:.2f} minutes')],
[sg.Text(f'Rating: {video.rating:.2f}')],
[sg.Text(f'# of views: {video.views}')],
[sg.Text('.MP4')],
[sg.Button('Cancel'),sg.Button('Download')] ]
# Create the window
window = sg.Window('Video Converter', layout) # Part 3 - Window Defintion
# Display and interact with the Window
event, values = window.read() # Part 4 - Event loop or Window.read call
requestedResolution = values[0]
# close first window
window.close()
if event == "Cancel":
sys.exit()
isDownloaded = False
red_dots_ring = b'R0lGODlhkAHIALMPAM0/QMQfIdRcXtpxc9+EhOahofbf3/vv7+KTlOy4ucIYGv/+/vHNze/Dw8MbHf///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjMzOEMxNzM2RTAzMTFFNjg4Mzk5NzdDMkE1QzlDRjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjMzOEMxNzQ2RTAzMTFFNjg4Mzk5NzdDMkE1QzlDRjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzM4QzE3MTZFMDMxMUU2ODgzOTk3N0MyQTVDOUNGMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MzM4QzE3MjZFMDMxMUU2ODgzOTk3N0MyQTVDOUNGMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t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'
errorDownloading = False
def loading():
global isDownloaded
global SAVE_PATH
global video
global event
global errorDownloading
try:
if event == 'Download':
# download the selected video
if requestedResolution == "1080":
video.streams.get_by_itag(137).download(SAVE_PATH)
elif requestedResolution == "720":
video.streams.get_by_itag(136).download(SAVE_PATH)
elif requestedResolution == "480":
video.streams.get_by_itag(135).download(SAVE_PATH)
elif requestedResolution == "360":
video.streams.get_by_itag(134).download(SAVE_PATH)
elif requestedResolution == "240":
video.streams.get_by_itag(133).download(SAVE_PATH)
except:
errorDownloading = True
isDownloaded = True
#start loading animation on next thread
threading.Thread(target=loading, daemon=True).start()
# Next demo is to show how to create custom windows with animations
layout = [[sg.Image(data=red_dots_ring, enable_events=True, background_color='white', key='-IMAGE-', right_click_menu=['UNUSED', 'Exit'])],]
window = sg.Window('My new window', layout,
no_titlebar=True,
grab_anywhere=True,
keep_on_top=True,
background_color='white',
alpha_channel=.8,
margins=(0,0))
offset = 0
while isDownloaded != True: # Event Loop
event, values = window.read(timeout=10) # loop every 10 ms to show that the 100 ms value below is used for animation
# update the animation in the window
window['-IMAGE-'].update_animation(red_dots_ring, time_between_frames=100)
window.close()
if errorDownloading == True:
sg.popup('You cant download this video in the quality or this video is not available for download') # Part 2 - The Layout
sys.exit()
# Define the window's contents
layout = [ [sg.Text('Video has been sucsesfully downloaded to your downloads folder!') ], # Part 2 - The Layout
[sg.Text('')],
[sg.Text('Video Title')],
[sg.Text(f'Title: {video.title}')],
[sg.Button('Done'),sg.Button('Open Folder')] ]
# Create the window
window = sg.Window('Youtube Video Converter', layout) # Part 3 - Window Defintion
# Display and interact with the Window
event, values = window.read()
if event == "Open Folder":
videoTitle = str(f'{video.title}')
fullPath = (SAVE_PATH+r'\\'+videoTitle+".mp4")
fullPath = os.path.normpath(fullPath)
subprocess.Popen(f'explorer /select,{fullPath}')