A lightning-fast, universal command-line download manager
Project description
IDM-CLI (Internet Download Manager CLI)
Inspired by the official Internet Download Manager (IDM)
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
.pdfor.exe). The built-in smart HTTPHEADdetector 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
ffmpegto 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 typestart queueto 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~/Downloadsfolder. - 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 --upgradeprocess for you seamlessly! - Browser Extension Integration: Automatically intercept downloads from Chrome and Edge and route them directly into the IDM-CLI high-speed downloader!
- Interactive UI: A beautiful, responsive terminal interface powered by
richandquestionarywith real-time speed, ETA, and progress bars. - Pause & Play: Press
pto pause the active downloads without losing progress, andrto resume them.
🛠️ Prerequisites
- Python 3.8+
- FFmpeg: Required for muxing video and audio streams, and converting media to
.mp3. Ensureffmpegis installed and added to your system's PATH.- Windows users can easily install it by running:
winget install ffmpegin their terminal.
- Windows users can easily install it by running:
📦 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!)
Browser Extension
IDM-CLI comes with a built-in Chrome/Edge extension that can automatically catch your downloads! To install the extension, simply open IDM-CLI and type:
install extension
Follow the interactive on-screen guide to easily load the extension and link it to IDM-CLI natively.
⚙️ Architecture Highlights
downloader.py: The core asynchronous engine handlingaiohttprange requests, chunk merging, and resume states.cli.py: The interactive orchestration layer utilizingtyper,rich, andquestionary.muxer.py: Safe abstraction oversubprocesscalls toffmpegfor 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
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 idm_cli-1.1.7.tar.gz.
File metadata
- Download URL: idm_cli-1.1.7.tar.gz
- Upload date:
- Size: 58.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41d91334bf2bff5dbe9a9ab056da6a90ab2af66a2a63183e88526129ba541a5b
|
|
| MD5 |
71098f1d340636d5aae21a1bee8462f1
|
|
| BLAKE2b-256 |
e7359dd24ce7c934dc77254db90dcac640ea898ee1a4cc9ba2a0c95f74b2f83d
|
File details
Details for the file idm_cli-1.1.7-py3-none-any.whl.
File metadata
- Download URL: idm_cli-1.1.7-py3-none-any.whl
- Upload date:
- Size: 58.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65bac38fd0cbd49b8525db8e385fcc2f7a763212c3f09bb5eeb54eee4cbf82ac
|
|
| MD5 |
794bf5072193083d213317f9d3809216
|
|
| BLAKE2b-256 |
23377e76bfcc29ddf61b831a3d667cf04bf6baa18dc5579f6480492e465e9fc9
|