Production-Ready YouTube Downloader
Project description
camelDownloader ๐ซ
camelDownloader is a free, open-source YouTube downloader that runs entirely in your terminal. No browser extensions, no ads, no limits. Download any YouTube video in any quality โ from 360p all the way up to 4K โ or extract audio as MP3. Works on Linux, macOS, Android (Termux), and Windows.
Table of Contents
- What It Does
- Key Features
- How It Works
- Prerequisites
- Installation
- Usage
- Quality Options
- Where Do Downloads Go?
- Troubleshooting
- Project Structure
- Contributing
- License
๐ฏ What It Does
You give it a YouTube URL. It downloads the video (or audio) to your device in whatever quality you choose. That's it.
camel-downloader
๐ Enter YouTube URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
๐ Your choice (1-7): 2
โ
DOWNLOAD COMPLETE!
๐ Location: ~/Downloads/camelDownloader
โจ Key Features
- ๐บ All Resolutions โ 360p, 720p, 1080p, 1440p (2K), and 2160p (4K)
- ๐ต MP3 Audio Extraction โ download sound only at 192kbps
- ๐ No Quality Loss โ merges video and audio without re-encoding
- ๐ ๏ธ Reliable โ auto-retries 10 times on network failures, bypasses geo-restrictions
- ๐ Live Progress โ shows download speed, percentage, ETA, and file size in real time
- ๐ Organized โ files are saved to a dedicated
camelDownloaderfolder - ๐ค True CLI โ one global command (
camel-downloader) works from any terminal window, anywhere on your system - ๐ฑ Android Support โ works on Android via Termux, saves to your public Downloads folder
- ๐ Free & Open Source โ MIT licensed, no accounts, no subscriptions
โ๏ธ How It Works
camelDownloader is built on top of yt-dlp, the most powerful YouTube downloading library available. Here is what happens when you run it:
- You paste a YouTube URL and pick a quality.
- yt-dlp fetches the video metadata (title, duration, available resolutions).
- It downloads the video stream and audio stream separately (YouTube stores them apart for HD content).
- FFmpeg merges them into a single MP4 file on your device.
- The file is saved to your Downloads folder.
๐ Prerequisites
Before installing camelDownloader, you need two things:
1. Python 3.8 or higher
Check if you have it:
python3 --version
If not installed:
| Platform | How to install Python |
|---|---|
| Ubuntu / Debian | sudo apt install python3 |
| macOS | brew install python or python.org |
| Android (Termux) | pkg install python |
| Windows | python.org/downloads โ check "Add to PATH" during install |
2. FFmpeg
FFmpeg is used to merge the video and audio streams into one file. Without it, HD downloads will have no sound.
| Platform | How to install FFmpeg |
|---|---|
| Ubuntu / Debian | sudo apt install ffmpeg |
| macOS | brew install ffmpeg |
| Android (Termux) | pkg install ffmpeg |
| Windows | ffmpeg.org/download โ add to PATH after installing |
๐ Installation
Linux (Ubuntu / Debian)
# Step 1 โ Install prerequisites
sudo apt update
sudo apt install python3 python3-pip ffmpeg -y
# Step 2 โ Install camelDownloader
pip install camelDownloader
# Step 3 โ Make the command available globally (run once)
mkdir -p ~/.local/bin
ln -sf $(which camel-downloader) ~/.local/bin/camel-downloader
If
camel-downloaderis still not found after Step 3, add this line to your~/.bashrcfile:export PATH="$HOME/.local/bin:$PATH"Then run
source ~/.bashrcto apply it.
Verify the install:
camel-downloader
macOS
# Step 1 โ Install Homebrew if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Step 2 โ Install prerequisites
brew install python ffmpeg
# Step 3 โ Install camelDownloader
pip3 install camelDownloader
Verify the install:
camel-downloader
Android (Termux)
Termux is a free Android terminal app. It lets you run Linux commands directly on your phone โ no root required.
Step 1 โ Install Termux
Download Termux from F-Droid (the Play Store version is outdated and broken):
๐ https://f-droid.org/en/packages/com.termux/
Step 2 โ Open Termux and run these commands
# Update Termux packages
pkg update && pkg upgrade -y
# Install Python and FFmpeg
pkg install python ffmpeg -y
# Install camelDownloader
pip install camelDownloader
Step 3 โ Grant storage access (one-time)
This lets your downloads appear in Android's file manager (Files app, Downloads folder):
termux-setup-storage
Tap Allow when Android asks for permission.
Verify the install:
camel-downloader
Windows
Step 1 โ Install Python
Download from python.org/downloads. During installation, check the box that says "Add Python to PATH".
Step 2 โ Install FFmpeg
- Download FFmpeg from ffmpeg.org/download
- Extract the zip file
- Copy the path to the
binfolder inside (e.g.C:\ffmpeg\bin) - Add it to your system PATH:
- Search "Environment Variables" in the Start menu
- Click "Environment Variables"
- Under "System variables", find
Path, click Edit - Click New and paste the path to ffmpeg's
binfolder - Click OK on all windows
Step 3 โ Open Command Prompt and install
pip install camelDownloader
Verify the install:
camel-downloader
From Source (All Platforms)
Use this if you want to run the latest development code or contribute to the project.
# Clone the repository
git clone https://github.com/troubleman96/camelDownloader-.git
cd camelDownloader-
# Install in editable mode (changes to source take effect immediately)
pip install -e .
๐ฎ Usage
Run the command from any terminal:
camel-downloader
camel also works as a shorter alias:
camel
You will see this screen:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
camelDownloader ๐ซ
Production YouTube Downloader
Handles ANY video type, length, and quality
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Enter YouTube URL:
Step 1 โ Paste your YouTube link and press Enter.
๐ Fetching video information...
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐น Title: Never Gonna Give You Up
๐ค Uploader: Rick Astley
โฑ๏ธ Duration: 3:33
๐๏ธ Views: 1,500,000,000
๐ Available resolutions: 1080p, 720p, 480p, 360p, 240p, 144p
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Step 2 โ Choose your quality:
๐ SELECT QUALITY:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1) 360p - SD (Small file, fast download)
2) 720p - HD (Balanced quality and size)
3) 1080p - Full HD (High quality, larger file)
4) 1440p - 2K (Very high quality)
5) 2160p - 4K (Maximum quality, huge file)
6) Best - Auto (Let YouTube decide best quality)
7) Audio - MP3 (Sound only, ~3MB per minute)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Your choice (1-7):
Step 3 โ Wait for the download to finish:
โฌ๏ธ 78.3% | 45.2MB/57.8MB | Speed: 3.2MiB/s | ETA: 4s
๐ Merging video and audio streams (this may take a moment)...
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
DOWNLOAD COMPLETE!
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Location: ~/Downloads/camelDownloader
๐ Filename: Never Gonna Give You Up
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Quality Options
| Option | Label | Best For | Approx. File Size (10 min video) |
|---|---|---|---|
| 1 | 360p SD | Slow internet, saving data | ~50 MB |
| 2 | 720p HD | Most use cases, good balance | ~150 MB |
| 3 | 1080p Full HD | Desktop viewing, archiving | ~300 MB |
| 4 | 1440p 2K | Large monitors, high quality | ~600 MB |
| 5 | 2160p 4K | 4K displays, video editing | ~1.5 GB |
| 6 | Best Auto | Maximum quality available | Varies |
| 7 | Audio MP3 | Music, podcasts, audio only | ~25 MB |
File sizes are estimates. Actual sizes depend on the video content and YouTube's encoding.
๐ Where Do Downloads Go?
Files are saved automatically โ you don't need to choose a folder.
| Platform | Download Location |
|---|---|
| Linux | ~/Downloads/camelDownloader/ |
| macOS | ~/Downloads/camelDownloader/ |
| Android (Termux) | ~/storage/downloads/camelDownloader/ โ visible in your Android Downloads folder |
| Windows | C:\Users\YourName\Downloads\camelDownloader\ |
On Android, after downloading, open your Files app and go to Downloads โ camelDownloader to find your file.
๐ ๏ธ Troubleshooting
camel-downloader: command not found
The command is not in your PATH. Fix it:
# Linux / macOS
mkdir -p ~/.local/bin
ln -sf $(which camel-downloader) ~/.local/bin/camel-downloader
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
On Android (Termux), this should not happen after a successful pip install. Try closing and reopening Termux, then run camel-downloader again.
ffmpeg not installed error
Install FFmpeg for your platform (see Prerequisites above).
termux-setup-storage aborted or failed (Android)
This is a known Termux bug. Try again:
termux-setup-storage
Make sure to tap Allow when Android shows the permission popup. If it keeps failing, your downloads will still work โ they just save to Termux's internal folder (~/downloads/) instead of the public Downloads folder.
Download fails or gives a 403 error
yt-dlp may be outdated. Update it:
pip install -U yt-dlp
Video says it's age-restricted or private
Age-restricted videos require YouTube login cookies. This is an advanced use case โ open an issue on GitHub and we can help.
Disk full or permission error
Check that you have enough storage space on your device. On Android, make sure termux-setup-storage has been run and storage permission was granted.
๐๏ธ Project Structure
camel-downloader/
โโโ src/
โ โโโ camel_downloader/
โ โโโ __init__.py # Package marker
โ โโโ main.py # All core logic and CLI entry point
โโโ pyproject.toml # Build config, dependencies, CLI entry points
โโโ setup.py # Minimal setuptools shim
โโโ README.md # This file
How the CLI command is registered
The camel-downloader command is defined in pyproject.toml:
[project.scripts]
camel-downloader = "camel_downloader.main:main"
camel = "camel_downloader.main:main"
When pip installs the package it automatically generates an executable script at
<env>/bin/camel-downloader that calls the main() function in main.py.
No manual scripting needed โ pip handles it all.
๐ค Contributing
This project is open source and contributions are welcome.
Ways to contribute:
- Report bugs by opening an issue
- Suggest new features via issues
- Submit a Pull Request with improvements
To contribute code:
# Fork the repo on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/camelDownloader-.git
cd camelDownloader-
# Install in editable mode so your changes take effect immediately
pip install -e .
# Create a branch for your change
git checkout -b my-feature
# Make your changes, then commit and push
git add .
git commit -m "describe your change"
git push origin my-feature
Then open a Pull Request on GitHub.
๐ License
Distributed under the MIT License โ free to use, modify, and distribute for any purpose.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cameldownloader-2.1.1.tar.gz.
File metadata
- Download URL: cameldownloader-2.1.1.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
528e0003468c187fd950bb1b76ce3f6f37d168f985f148bd616a92e2b907d415
|
|
| MD5 |
8955fb2aa8663eca03457e12a2410224
|
|
| BLAKE2b-256 |
e7590732d13052bb004478d70e6ebc9554341eed2ad65121bf9d9673b447622d
|
File details
Details for the file cameldownloader-2.1.1-py3-none-any.whl.
File metadata
- Download URL: cameldownloader-2.1.1-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f3e1e5436598ec18a0fb1eeb27eaeb9dee81b7e03b32b2c4a9aaedee2838dd3
|
|
| MD5 |
1d2139130aec8a963e1b3e846ae4ef56
|
|
| BLAKE2b-256 |
f07482d4e98c9c8bc83a35586df61307b7e6f4af180c2f29410b0ad1018aabdd
|