DEV Community

Cover image for How to Download YouTube Videos With Python?
Thuwarakesh Murallie
Thuwarakesh Murallie

Posted on • Edited on • Originally published at the-analytics.club

How to Download YouTube Videos With Python?

YouTube has become the go-to source for videos on the internet. While there are many ways to download YouTube videos, using Python is one of the easiest. In this article, we will show you how to use Python to download YouTube videos.

We can use the package Pytube to download YouTube videos in a Python script. It's a free tool you can install from the PyPI repository. You can also specify the output format (eg: mp4) and resolution (eg: 720px) when downloading videos.

Downloading YouTube Videos in Python

Here's a step-by-step approach to downloading YouTube videos in Python.

  1. Install Pytube using pip
   pip install pytube
Enter fullscreen mode Exit fullscreen mode
  1. In your script import the YouTube class from pytube package.
   from pytube import YouTube
Enter fullscreen mode Exit fullscreen mode
  1. Create an object of YouTube bypassing the video URL
   yt = YouTube("<Your youtube URL>")
Enter fullscreen mode Exit fullscreen mode
  1. Use the filter method to specify the download format of the video
   mp4_files = yt.streams.filter(file_extension="mp4")
Enter fullscreen mode Exit fullscreen mode
  1. Get the video you want by specifying the resolution
   mp4_369p_files = mp4_files.get_by_resolution("360p")
Enter fullscreen mode Exit fullscreen mode
  1. Save the downloaded video to the local file system
   mp4_369p_files.download("<Download folder path>")
Enter fullscreen mode Exit fullscreen mode

Here's how the completed script will look like. I've wrapped it with a function definition that accepts the url and outpath as arguments.

from pytube import YouTube


def download_360p_mp4_videos(url: str, outpath: str = "./"):

    yt = YouTube(url)

    yt.streams.filter(file_extension="mp4").get_by_resolution("360p").download(outpath)


if __name__ == "__main__":

    download_360p_mp4_videos(
        "https://www.youtube.com/watch?v=JfVOs4VSpmA&t=4s&ab_channel=SonyPicturesEntertainment",
        "./trailers",
    )
Enter fullscreen mode Exit fullscreen mode

The above code will download the Spiderman: No way home trailer and save it in a folder called 'trailers'.

Creating a CLI to download more videos in command prompt.

With a little trick, we can even make this a CLI. Here's how to use Typer to convert the function you wrote into a CLI.

from pytube import YouTube
from typer import Typer

app = Typer()


@app.command()
def download_360p_mp4_videos(url: str, outpath: str = "./"):

    yt = YouTube(url)

    yt.streams.filter(file_extension="mp4").get_by_resolution("360p").download(outpath)


if __name__ == "__main__":

    app()

Enter fullscreen mode Exit fullscreen mode

Now we converted our function into a command line interface that accepts a URL parameter and saves the video into the local filesystem. Here's how to run this.

python get-yt.py "https://www.youtube.com/watch?v=JfVOs4VSpmA&t=4s&ab_channel=SonyPicturesEntertainment"
Enter fullscreen mode Exit fullscreen mode

Did you like what you read? Consider subscribing to my email newsletter because I post more like this frequently.

Thanks for reading, friend! Say Hi to me on LinkedIn, Twitter, and Medium.

Top comments (2)

Collapse
 
gozaro profile image
Gozaro

I know that this could be a silly problem, but I get when running the script:
"File "youtube.py", line 4
def download_360p_mp4_videos(url: str, outpath: str = "./"):"

SyntaxError: invalid syntax

Collapse
 
saschalalala profile image
Sascha

What python Version are you using? Typehints were introduced in Python 3.5 iirc so you need at least this version.