How to Download YouTube Videos in Python
In this tutorial, we will learn how to download YouTube videos in two different ways using Python.
Download pytube
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
Now that pytube
has been installed it can be used in your program. It will need to be imported first like this:
import pytube
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 ()
parenthesis.
video.download('videos')
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 pafy
Install pafy
We will first need to install pafy
using pip
in the terminal.
pip install pafy
Import pafy
Now import pafy
into your Python program.
import pafy
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)
Conclusion
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.