A simple guide to download videos from YouTube using python
- Objectives:
-
- Download YouTube Videos
- Saving as subclip (saving a portion of the video)
- Converting to MP3
-
- Required Tools:
- Steps:
- pip install pytube and moviepy
Basic Usage
from pytube import YouTube from moviepy.editor import * # download a file from youtube youtube_link = 'https://www.youtube.com/watch?v=yourtubevideos' w = YouTube(youtube_link).streams.first() w.download(output_path="/your/target/directory") # download a file with only audio, to save space # if the final goal is to convert to mp3 youtube_link = 'https://www.youtube.com/watch?v=targetyoutubevideos' y = YouTube(youtube_link) t = y.streams.filter(only_audio=True).all() t[0].download(output_path="/your/target/directory")
Downloading videos from a YouTube playlist
import requests
import re
from bs4 import BeautifulSoup
website = 'https://www.youtube.com/playlist?list=yourfavouriteplaylist'
r= requests.get(website)
soup = BeautifulSoup(r.text)
tgt_list = [a['href'] for a in soup.find_all('a', href=True)]
tgt_list = [n for n in tgt_list if re.search('watch',n)]
unique_list= []
for n in tgt_list:
if n not in unique_list:
unique_list.append(n)
# all the videos link in a playlist
unique_list = ['https://www.youtube.com' + n for n in unique_list]
for link in unique_list:
print(link)
y = YouTube(link)
t = y.streams.all()
t[0].download(output_path="/your/target/directory")
Converting from MP4 to MP3 (from a folder with mp4 files)
import moviepy.editor as mp
import re
tgt_folder = "/folder/contains/your/mp4"
for file in [n for n in os.listdir(tgt_folder) if re.search('mp4',n)]:
full_path = os.path.join(tgt_folder, file)
output_path = os.path.join(tgt_folder, os.path.splitext(file)[0] + '.mp3')
clip = mp.AudioFileClip(full_path).subclip(10,) # disable if do not want any clipping
clip.write_audiofile(output_path)