Skip to content
This repository has been archived by the owner on Jun 30, 2024. It is now read-only.
/ YTDownloader Public archive

A program to download any YouTube video or playlist

License

Notifications You must be signed in to change notification settings

realshouzy/YTDownloader

Repository files navigation

Icon
YTDownloader
A program to download any YouTube video or playlist

pre-commit.ci status pylint status tests status CodeQL Releases semantic-release Downloads Python 3.8+ License: MIT Ruff Style: black Imports: isort


Disclaimer

WARNING: DOWNLOADING COPYRIGHTED MATERIAL IS HIGHLY ILLEGAL! I DO NOT TAKE ANY RESPONSIBILITY FOR YOUR USAGE OF THIS TOOL!

Tutorial

A tutorial on how to the application works can be found here.

Running the Program

Requirements

Make sure you have Python 3.8 or higher installed. Note that pypy is not officially supported, however it can work with pypy on Windows.

The used libraries are:

# standard library
import concurrent.futures
import pathlib
import re
import typing
import webbrowser

# third party
import PySimpleGUI
import pytube

# for testing
import pytest

On Windows

Simply download the executable here and run it. This is the quickest way to get started.

Alternatively, you can directly run the script by following these steps:

  1. Clone the repository:
git clone https://github.com/realshouzy/YTDownloader.git && cd YTDownloader
  1. Install the required dependencies:
pip install -r requirements.txt
  1. Run the script:
python -m YTDownloader

Running the script this way ensures you have access to the latest features and updates.

On Linux or macOS

Unfortunately, there is no pre-built executable for Unix systems, so you'll need to do the whole procedure:

  1. Clone the repository:
git clone https://github.com/realshouzy/YTDownloader.git && cd YTDownloader
  1. Install the required dependencies:
pip install -r requirements.txt
  1. Run the script:
python3 -m YTDownloader

Regarding the lack of tests

While this project currently lacks tests, I acknowledge the importance of testing for ensuring code quality and reliability is. Initially, due to my limited knowledge when starting the project, I didn't prioritize writing tests. As the project evolved, I didn't care to invest time in writing tests, as I originally intended it to be a smaller-scale project. Recognizing the significance of testing in continuous integration, I have taken the initiative to write tests.

Contributing

If you are interested in contributing to this project, please refer here for more information .

License

YTDownloader is available under the MIT license

Credit

This concept is not my idea. I was inspired by Clear Code from this idea. I took the liberty to add some features and extend the code base, such as downloading playlists, selecting a download directory and other adjustments and improvements.

The icon can be found here.