How to Download YouTube Videos in Python
In this tutorial, we will learn how to download YouTube videos in two different ways using Python.
The first way to download a YouTube video is with
pytube, which is a third-party Python package. For Python 3 type the following into the terminal to install it.
pip install pytube3
for Python 2.* install
pytube like this:
pip install pytube
Import the pytube Package
pytube has been installed it can be used in your program. It will need to be imported first like this:
Create a New YouTube object
The next step is to create a new YouTube object. To do this, supply a YouTube video URL to the
pytube.YouTube() method and store the result in a variable.
url = 'https://www.youtube.com/watch?v=-t1_ffaFXao' youtube = pytube.YouTube(url)
Get the Video
Now we can extract the video to download from the YouTube object. YouTube keeps all videos in a variety of different resolutions and with
pytube we can automatically select the highest resolution available or simply get the first stream (which might be lower in quality).
video = youtube.streams.first() # or the best quality: video = youtube.streams.get_highest_resolution()
Download the Video
Now we can download the video using the
download() method, passing the path to where the file should be saved inside the
Get Video Information
Information about the video such as its title, age restriction status, id .etc are available as properties of the
video object. They can be accessed like this:
video.age_restricted video.title video.id
Download Age Restricted Videos
Some videos on YouTube are not allowed to be viewed until you log in. Unfortunately,
pytube will not be able to download those videos, though they can be downloaded using a different YouTube video downloader package for Python called
We will first need to install
pip in the terminal.
pip install pafy
pafy into your Python program.
Download a Video with pafy
In the example below, we are creating a new
pafy object with a YouTube video URL, getting the best video resolution and downloading it.
import pafy url = 'https://www.youtube.com/watch?v=-t1_ffaFXao' video = pafy.new(url) best = video.getbest() filename = best.download(filepath='videos/' + title + '.' + best.extension)
You now know two different ways to download YouTube videos in Python. The above examples demonstrate how to use the pytube and
pafy packages to get and download a video though in most cases this will just be one function in a class that has more functionality.