How to Build a YouTube Video Downloader in Python: A Beginner's Guide
Usecase:
Online websites for downloading YouTube videos are often full of ads and complicated to use. For educational purposes, here’s a simple, ad-free way to create your own YouTube video downloader using Python.
Result:
Lets get started!
Let me show you the essential script.
#pip install pytube (if module not installed yet)
from pytube import YouTube
#insert the link you want to download
yt = YouTube("https://www.youtube.com/watch?v=K9tOnIJyvRw")
#streams object able to use multiple method to call
yt.streams.get_highest_resolution().download()
print(f"Video downloaded successfully: '{yt.title}'")
That's all you need.
yt.streams
: This gets all available video streams for the YouTube video.get_highest_resolution()
: This method selects the stream with the highest resolution.download()
: This method downloads the selected video stream.
From the test, it seems that unable to call method directly but need to call method from object streams
which is get_highest_resolution()
Full explanation:
You cannot call the download
method directly on the YouTube
object because the download
method is a part of the Stream
object, not the YouTube
object. Here’s a more detailed explanation:
YouTube
Object:- When you create a
YouTube
object, it represents a specific YouTube video. This object contains various attributes and methods to interact with the video.
- When you create a
Stream
Object:- The
YouTube
object has astreams
attribute, which is a list ofStream
objects. EachStream
object represents a different format or quality option for downloading the video (e.g., 360p, 720p, audio-only, etc.).
- The
download
Method:- The
download
method is a method of theStream
class, not theYouTube
class. Therefore, you need to first select a specificStream
object from thestreams
attribute of theYouTube
object before you can call thedownload
method.
- The
We want to make it better by stating the path to save downloaded video and also URL for video.
#pip install pytube (if module not installed yet)
from pytube import YouTube
Importing Youtube class from pytube library which will be used to interacting with Youtube videos
# Create function to download a YouTube video
def download_video(video_url, output_path):
try:
video = YouTube(video_url)
stream = video.streams.get_highest_resolution()
stream.download(output_path=output_path)
print(f"Video downloaded successfully: '{video.title}'")
except Exception as e:
print(f"Failed to download video. Error: {e}")
def download_video(video_url, output_path)
is defining a function name as download video that takes two arguments which is video url and output path
video_url
: The URL of the YouTube video to be downloaded.output_path
: The directory where the downloaded video will be saved.
video = YouTube(video_url)
create 'Youtube' object for specified video URL that will called later as variable video
stream = video.streams.get_highest_resolution()
Selects the highest resolution stream available for the video.
stream.download(output_path=output_path)
Downloads the selected stream to the specified directory.
print(f"Video downloaded successfully: '{video.title}'")
output if the video downloaded successfully
except Exception as e: print(f"Failed to download video. Error: {e}")
when the download not able to process, this output will trigger
video_url = input('Enter URL of YouTube video: ')
output_path = input('Enter the directory to save the video: ')
input means that user will need to fill the URL and also the path which will be stored to the variable video_url and output_path
download_video(video_url, output_path)
This last script will call download_video
function with the argument that has been given by user.
FULL CODE
# pip install pytube (if module not installed yet)
from pytube import YouTube
# Function to download a YouTube video
def download_video(video_url, output_path):
try:
video = YouTube(video_url)
stream = video.streams.get_highest_resolution()
stream.download(output_path=output_path)
print(f"Video downloaded successfully: '{video.title}'")
except Exception as e:
print(f"Failed to download video. Error: {e}")
# Request URL of YouTube Video
video_url = input('Enter URL of YouTube video: ')
output_path = input('Enter the directory to save the video: ')
# Download the video
download_video(video_url, output_path)
Let me know if you have any comment.
Subscribe to my newsletter
Read articles from Ahmad Afif directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by