In a previous blog post, we explored downloading YouTube videos using the Python package pytube. However, as of recent updates, pytube has become unreliable and fails to work in many cases. Similarly, another popular tool, youtube-dl, has not been updated in over three years and exhibits issues, particularly on macOS (issue link).

Fortunately, a new fork, ytdl-nightly, provides an excellent solution for downloading YouTube videos and playlists. In this guide, I will show you how to set up ytdl-nightly and use it to download videos, including playlists, from YouTube.

 

Why Use ytdl-nightly?

ytdl-nightly is a maintained and actively updated fork of youtube-dl. It includes fixes for many of the issues faced by the older tool and works seamlessly on various platforms, including macOS.

Key features:

  • Active Development: Frequent updates ensure compatibility with YouTube's constantly changing API.
     

  • Playlist Support: Download entire playlists with a single command.
     

  • Simple Integration: Works seamlessly with Python and pip.

Getting Started with ytdl-nightly

Follow these steps to set up ytdl-nightly and download YouTube videos.

1. Install ytdl-nightly

Since ytdl-nightly is not available on PyPI, you'll need to download and install the package manually from the releases page.

Steps to Install:

  1. Download the latest release ZIP file from ytdl-nightly releases.
     

  2. Extract the ZIP file.
     

  3. Open a terminal and navigate to the extracted folder.
     

  4. Run the following command to install the package:

    pip install .


    This will install ytdl-nightly globally on your machine.

2. Verify Installation

After installation, verify that ytdl-nightly is installed correctly:

python -m ytdl-nightly --version

If the installation was successful, it will print the version number of ytdl-nightly.

Downloading a Video or Playlist

Here’s how to download a single video or an entire playlist using ytdl-nightly.

Download a Single Video

To download a single video, run:

python -m ytdl-nightly https://www.youtube.com/watch?v=EPo5wWmKEaI

The video will be downloaded to the current directory.

Download a Playlist

To download an entire playlist, use the playlist URL:

python -m ytdl-nightly https://www.youtube.com/watch?v=EPo5wWmKEaI&list=PLmIUqzJB87sZ35ayTIjagy9gQuw8ueKQC

This command will download all videos in the playlist sequentially.

Python Script Example

If you prefer automating the download process with Python, here’s an example script:

import subprocess

def download_video(video_url):
    try:
        subprocess.run([
            "python", "-m", "ytdl-nightly", video_url
        ], check=True)
        print(f"Downloaded: {video_url}")
    except subprocess.CalledProcessError as e:
        print(f"Failed to download {video_url}: {e}")

if __name__ == "__main__":
    # Example: Single video
    video_url = "https://www.youtube.com/watch?v=EPo5wWmKEaI"
    download_video(video_url)

    # Example: Playlist
    playlist_url = "https://www.youtube.com/watch?v=EPo5wWmKEaI&list=PLmIUqzJB87sZ35ayTIjagy9gQuw8ueKQC"
    download_video(playlist_url)

Save this script as download_youtube.py and run it in the terminal to download videos or playlists.

Conclusion

The ytdl-nightly package provides a reliable and up-to-date solution for downloading YouTube videos and playlists, overcoming the limitations of older tools like pytube and youtube-dl. With its simple installation and robust performance, you can easily automate video downloads or use it for personal projects.

If you encounter any issues or have suggestions, feel free to share them in the comments below or contribute to the ytdl-nightly project on GitHub.