Download video and audio of youtube
Browse files- download.py +51 -5
download.py
CHANGED
@@ -60,10 +60,55 @@ def download_twitch(url, type):
|
|
60 |
os.system(f'ffmpeg -i {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{args.format} -c:a libmp3lame -b:a 192k -stats -loglevel warning {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{DOWNLOAD_AUDIO_FORMAT}')
|
61 |
os.system(f'rm {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{args.format}')
|
62 |
|
63 |
-
def download_youtube_video(url
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
def main(args):
|
69 |
url = args.url
|
@@ -71,7 +116,8 @@ def main(args):
|
|
71 |
download_twitch(url, DOWNLOAD_VIDEO)
|
72 |
download_twitch(url, DOWNLOAD_AUDIO)
|
73 |
elif 'youtube' in url.lower() or 'youtu.be' in url.lower():
|
74 |
-
|
|
|
75 |
else:
|
76 |
print('Unknown video source')
|
77 |
|
|
|
60 |
os.system(f'ffmpeg -i {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{args.format} -c:a libmp3lame -b:a 192k -stats -loglevel warning {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{DOWNLOAD_AUDIO_FORMAT}')
|
61 |
os.system(f'rm {AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{args.format}')
|
62 |
|
63 |
+
def download_youtube_video(url):
|
64 |
+
yt = YouTube(url)
|
65 |
+
|
66 |
+
# Get all video streams
|
67 |
+
video_streams = yt.streams.filter(mime_type="video/mp4")
|
68 |
+
|
69 |
+
# Get max resolution of video streams
|
70 |
+
max_resolution = 0
|
71 |
+
for stream in video_streams:
|
72 |
+
if stream.audio_codec is not None:
|
73 |
+
resolution = int(stream.resolution[:-1])
|
74 |
+
if resolution > max_resolution:
|
75 |
+
max_resolution = resolution
|
76 |
+
max_resolution = f"{max_resolution}p"
|
77 |
+
|
78 |
+
# Get stream with max resolution
|
79 |
+
video_streams_max_resolution = video_streams.filter(resolution=max_resolution)
|
80 |
+
for stream in video_streams_max_resolution:
|
81 |
+
if stream.audio_codec is not None:
|
82 |
+
video_stream = stream
|
83 |
+
|
84 |
+
# Download video
|
85 |
+
video_stream.download(filename=f'{VIDEO_FOLDER}/{DOWNLOAD_VIDEO_NAME}.{DOWNLOAD_VIDEO_FORMAT}')
|
86 |
+
|
87 |
+
def download_youtube_audio(url):
|
88 |
+
yt = YouTube(url)
|
89 |
+
|
90 |
+
# Get all audio streams
|
91 |
+
audio_streams = yt.streams.filter(mime_type="audio/mp4")
|
92 |
+
|
93 |
+
# Get sorted list of audio bitrates
|
94 |
+
abr_list = []
|
95 |
+
for stream in audio_streams:
|
96 |
+
abr_list.append(stream.abr)
|
97 |
+
abr_list = sorted(set(abr_list))
|
98 |
+
|
99 |
+
# Get stream with max audio bitrate
|
100 |
+
audio_stream = audio_streams.filter(abr=abr_list[0]).first()
|
101 |
+
|
102 |
+
# Download audio
|
103 |
+
audio_stream.download(filename=f'{AUDIO_FOLDER}/{DOWNLOAD_AUDIO_NAME}.{DOWNLOAD_AUDIO_FORMAT}')
|
104 |
+
|
105 |
+
def download_youtube(url, type):
|
106 |
+
if type == DOWNLOAD_VIDEO:
|
107 |
+
download_youtube_video(url)
|
108 |
+
elif type == DOWNLOAD_AUDIO:
|
109 |
+
download_youtube_audio(url)
|
110 |
+
else:
|
111 |
+
print('Unknown youtube download type')
|
112 |
|
113 |
def main(args):
|
114 |
url = args.url
|
|
|
116 |
download_twitch(url, DOWNLOAD_VIDEO)
|
117 |
download_twitch(url, DOWNLOAD_AUDIO)
|
118 |
elif 'youtube' in url.lower() or 'youtu.be' in url.lower():
|
119 |
+
download_youtube(url, DOWNLOAD_VIDEO)
|
120 |
+
download_youtube(url, DOWNLOAD_AUDIO)
|
121 |
else:
|
122 |
print('Unknown video source')
|
123 |
|