Skip to main content

Fast, async YouTube/Instagram/TikTok downloader with desktop GUI and CLI

Project description

uDownloader

uDownloader Logo

Python 3.8+ Version 0.1.4 License MIT GitHub CI/CD

A fast, powerful Python application to download YouTube videos or audio. Supports single videos or entire playlists with both CLI and Desktop GUI. Uses yt-dlp for efficiency and modern format handling.

Available as a pip-installable package! Install with pip install udownloader

Features

Core Features

  • Download video or audio from YouTube, Instagram, TikTok, Twitter, and more
  • Process single content or playlists
  • Command-line interface with quality and format options
  • Configuration file support with sensible defaults
  • Detailed progress reporting during downloads
  • Automatic retry logic for failed downloads
  • Platform-specific organization (YouTube, Instagram, Twitter, TikTok, etc.)

Desktop Application

  • Modern PyQt6 GUI for intuitive downloading
  • Async/Concurrent Downloads - download multiple videos simultaneously
  • Download History Tracking - view all past downloads with statistics
  • Live Progress Monitoring - track active downloads in real-time
  • Queue Management - manage multiple downloads at once
  • Video Format Selection - choose output container (mp4, mkv, webm) per download
  • X/Twitter Support - browser cookie injection for auth-gated content
  • Settings Panel - configure quality, format, output, retries, concurrent limits, and cookies

Installation

Option 1: Install via pip (Recommended)

# From PyPI
pip install udownloader

# Or install from source (development mode)
git clone https://github.com/bolablg/uDownloader.git
cd uDownloader
pip install -e .

Option 2: Manual installation from source

git clone https://github.com/bolablg/uDownloader.git
cd uDownloader
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

After installation, you'll have two commands available:

  • udownloader - CLI version
  • udownloader-desktop - Desktop GUI version

Technology Stack

Component Technology Purpose
Language Python 3.8+ Core application
Video Downloading yt-dlp 2024.8.2+ Format detection & download
Desktop GUI PyQt6 6.6.0+ Modern graphical interface
Async Processing asyncio + ThreadPoolExecutor Concurrent downloads
Configuration JSON User settings persistence
History Tracking JSON Download records database
Testing pytest + pytest-cov Unit testing & coverage
Code Quality black + flake8 Formatting & linting
Packaging setuptools + wheel PyPI distribution
CI/CD GitHub Actions Automated testing & publishing

Key Dependencies:

  • yt-dlp - Video downloading engine
  • PyQt6 - Desktop application framework
  • pytest - Testing framework (dev only)
  • black - Code formatter (dev only)
  • flake8 - Code linter (dev only)

Quick Start

CLI Mode

# Initialize config file (creates ~/.uDownloader/config.json)
udownloader --init-config

# Download best quality video
udownloader --url https://youtube.com/watch?v=VIDEO_ID

# Download as MP3 audio only
udownloader --url https://youtube.com/watch?v=VIDEO_ID --audio

# Download specific quality (best, 1080p, 720p, 480p, 360p)
udownloader --url https://youtube.com/watch?v=VIDEO_ID --quality 720p

# Download in a specific container format (mp4, mkv, webm, original)
udownloader --url https://youtube.com/watch?v=VIDEO_ID --video-format mkv

# Download from X/Twitter using browser cookies for authentication
udownloader --url https://x.com/user/status/POST_ID --cookies-browser chrome

# Download entire playlist to custom location
udownloader --url https://youtube.com/playlist?list=PLAYLIST_ID --output ~/Downloads --retries 5

# Verbose logging for debugging
udownloader --url https://youtube.com/watch?v=VIDEO_ID --verbose

Desktop Application

# Launch desktop app (from installed package)
udownloader-desktop

# Or if running from source directory
python launcher_desktop.py

Features in Desktop App:

  • Download Tab: Paste URLs and start downloads with quality and format selection
  • Queue Tab: Monitor active downloads in real-time
  • History Tab: View all previous downloads with details
  • Statistics Tab: See download stats by platform and overall success rate
  • Settings: Configure output directory, quality, video format, concurrent limits, retry attempts, and browser cookies for X/Twitter

Screenshots

uDownloader GUI

uDownloader Settings

Configuration

The configuration file is automatically created at ~/.uDownloader/config.json when you run --init-config.

Default Settings:

{
    "output_dir": "uDownload",
    "audio_only": false,
    "video_quality": "best",
    "audio_quality": "192",
    "format_preference": "mp4",
    "max_concurrent_downloads": 1,
    "timeout": 300,
    "retries": 3,
    "verbose": false
}

You can edit this file directly to change defaults, or override with command-line arguments (CLI) or settings dialog (Desktop app).

Command-line Options

--url URL, -u URL              YouTube video or playlist URL (required for downloads)
--output OUTPUT, -o OUTPUT     Directory to save downloads (default: config or 'uDownload')
--audio, -a                    Download audio only (mp3)
--quality {best,1080p,720p,480p,360p}  Video quality preference
--config CONFIG, -c CONFIG     Path to custom config file
--init-config                  Create default config file and exit
--retries RETRIES, -r RETRIES  Number of retries on failure (default: 3)
--verbose, -v                  Show detailed logging
--help, -h                     Show help message

Architecture

Modules

  • cli.py - Command-line interface
  • downloader.py - Single download handler
  • async_downloader.py - Async/concurrent download manager
  • desktop.py - PyQt6 desktop GUI application
  • history.py - Download history tracking and statistics
  • config.py - Configuration management

Key Features in Code

  • AsyncDownloader class handles concurrent downloads using ThreadPoolExecutor
  • DownloadHistory class manages download records in JSON format
  • uDownloaderApp is the main desktop application with multi-tab interface
  • DownloadWorker runs downloads in separate thread to keep UI responsive

Documentation

Comprehensive documentation is available in the docs folder:

License

uDownloader is licensed under the MIT License - see LICENSE file for details.


Made with ❤️ with CodeX 5.3 for video downloaders everywhere

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

udownloader-0.1.6.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

udownloader-0.1.6-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file udownloader-0.1.6.tar.gz.

File metadata

  • Download URL: udownloader-0.1.6.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for udownloader-0.1.6.tar.gz
Algorithm Hash digest
SHA256 5c4a8d4678c342b85629fa492e5abff3f76319964952f6475f540d8d981d07e8
MD5 a75e981f4732ad8d302519b12609df00
BLAKE2b-256 e4835511ec569b4b9c5cc11fffb408ff27ecf3eed38f64bda3689726894b9b2a

See more details on using hashes here.

File details

Details for the file udownloader-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: udownloader-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for udownloader-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ab97e614483bcd78f364057309326ffb671949e84dd70785a25e4e482e3c8719
MD5 7c52f82a198ddf5dd982384943db420a
BLAKE2b-256 d44f4843cd83ec492d1d1eb621387f9e1a83d904bd77501f193032f14348c5ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page