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)