Skip to main content

A lightning-fast, universal command-line download manager

Project description

IDM-CLI (Internet Download Manager CLI)

A lightning-fast, powerful, and universal command-line download manager written in Python. IDM-CLI splits files into multiple parallel chunks (default 8, up to 32) to maximize your internet speed. It seamlessly supports downloading from YouTube, Facebook, Instagram, and any Direct File URL (.exe, .zip, .pdf, etc.).

🚀 Features

  • Blazing Fast Speeds: Splits downloads into multiple parallel chunks (like traditional IDM) to fully saturate your bandwidth.
  • Universal Downloader: Paste any direct URL (e.g., a .pdf or .exe). The built-in smart HTTP HEAD detector automatically recognizes file types and routes them to the parallel engine.
  • Social Media Support: Natively supports downloading from YouTube, Facebook, and Instagram via a modular extractor architecture. Auto-detects pre-muxed (SD/HD) vs separated streams. (Note: Instagram carousels are currently disabled to prevent DPAPI cookie issues).
  • Audio Only / MP3 Conversion: Easily download videos as audio. IDM-CLI automatically grabs the best audio stream and uses ffmpeg to perfectly convert it to .mp3.
  • Smart Auto-Resume: Internet dropped? Pressed Ctrl+C? No problem! IDM-CLI remembers the exact byte positions of all incomplete chunks. Paste the same link again to resume instantly.
  • Persistent Queue System (-Q): Add multiple files or videos to a queue and type start queue to automatically download all of them sequentially in the background.
  • Pristine Downloads Folder: All temporary chunks and raw media files are kept hidden in ~/.idm_cli/tmp/. Only the fully assembled, 100% complete files are moved to your ~/Downloads folder.
  • Smart Auto-Update: Once a day, IDM-CLI automatically checks the PyPI database in the background. If a new version is available, it handles the pip install --upgrade process for you seamlessly!
  • Interactive UI: A beautiful, responsive terminal interface powered by rich and questionary with real-time speed, ETA, and progress bars.
  • Pause & Play: Press p to pause the active downloads without losing progress, and r to resume them.

🛠️ Prerequisites

  • Python 3.8+
  • FFmpeg: Required for muxing video and audio streams, and converting media to .mp3. Ensure ffmpeg is installed and added to your system's PATH.
    • Windows users can easily install it by running: winget install ffmpeg in their terminal.

📦 Installation

Clone the repository and install the required dependencies:

git clone https://github.com/rj41-w2/idm-cli.git
cd IDM-CLI
pip install -r requirements.txt

(Note: If you plan to publish this to PyPI, users will simply be able to run pip install idm-cli)

💻 Usage

Run the app interactively by simply typing:

idm

This will open a prompt where you can paste your link, select video resolutions, or choose to queue the download.

CLI Flags (Fast Mode)

Skip the interactive menus by passing arguments directly!

# Download a video with auto-selected 1080p quality
idm "https://youtube.com/watch?v=..." -q 1080p -v

# Download Audio Only (converts to MP3)
idm "https://youtube.com/watch?v=..." -a

# Use 16 parallel chunks for maximum speed (default is 8)
idm "https://example.com/largefile.zip" -c 16

# Add a video to the Queue without downloading it right now
idm "https://facebook.com/..." -Q

Queue Management

To start downloading all items currently in your queue, simply type:

idm start queue

(You can also just type start queue into the interactive idm prompt!)

⚙️ Architecture Highlights

  • downloader.py: The core asynchronous engine handling aiohttp range requests, chunk merging, and resume states.
  • cli.py: The interactive orchestration layer utilizing typer, rich, and questionary.
  • muxer.py: Safe abstraction over subprocess calls to ffmpeg for media stream merging.
  • extractors/: Modular plugins (youtube.py, facebook.py, instagram.py, direct.py) for handling specialized metadata retrieval.

📄 License

This project is open-source and available under the MIT License.

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

idm_cli-1.1.6.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

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

idm_cli-1.1.6-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file idm_cli-1.1.6.tar.gz.

File metadata

  • Download URL: idm_cli-1.1.6.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for idm_cli-1.1.6.tar.gz
Algorithm Hash digest
SHA256 5c168083b5ae787a4781a3a152c9975528829fec957244e31f61b6f0c92ee8da
MD5 099ca52e7678fe67958f1f18192c1f96
BLAKE2b-256 da81eb8cf82eddea3c5ca03355345ec5d4f648e145ab8fd94f210bfd42ae9342

See more details on using hashes here.

File details

Details for the file idm_cli-1.1.6-py3-none-any.whl.

File metadata

  • Download URL: idm_cli-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for idm_cli-1.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 75fffe25f2343d83ed56e2eb30dc4f8612c508ce67dce40f9ac4d7ced5dab570
MD5 cd85145391f27a1e263203149639cc22
BLAKE2b-256 ea18d8a95750ea3a8943b0ec5326d9e25b380fb1ddc4a46c69a2223f0302bb31

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