Download torrents from the command line — easy, fast, cross-platform.
Project description
torrentor
Download torrent files from your terminal: no complicated setup, works on macOS, Linux, and Windows.
╺┳╸┏━┓┏━┓┏━┓┏━╸┏┓╻╺┳╸┏━┓┏━┓
┃ ┃ ┃┣┳┛┣┳┛┣╸ ┃┗┫ ┃ ┃ ┃┣┳┛
╹ ┗━┛╹┗╸╹┗╸┗━╸╹ ╹ ╹ ┗━┛╹┗╸
What It Does
- You give it a magnet link, a
.torrentfile, or a URL to one - It downloads the file using
transmission-cliin the background - When the download is done, it automatically stops seeding (sharing)
- It packs everything into a
.zipfile with a clean, URL-friendly filename - The
.zipis saved to your chosen folder, and the temp files are cleaned up
What You Need
- Python 3.10 or newer: download here if you don't have it
- transmission-cli: this is the download engine that runs in the background
Installing Transmission-CLI
macOS
Using Homebrew (recommended):
# Install transmission-cli on macOS using Homebrew
brew install transmission-cli
Using MacPorts:
# Install transmission on macOS using MacPorts
sudo port install transmission
Linux
# Debian / Ubuntu
sudo apt install transmission-cli
# Fedora / RHEL
sudo dnf install transmission-cli
# Arch Linux
sudo pacman -S transmission-cli
Windows
Using Chocolatey:
# Install transmission-cli on Windows using Chocolatey
choco install transmission-cli
Using Scoop:
# Install transmission on Windows using Scoop
scoop install transmission
Or use WSL (Windows Subsystem for Linux) and follow the Linux instructions above.
Installing Torrentor
With Pipx (Recommended)
pipx installs torrentor in its own isolated environment so it doesn't interfere with anything else on your system.
First, install pipx if you don't have it:
# macOS
brew install pipx
# Linux (Debian / Ubuntu)
sudo apt install pipx
# Windows (Scoop)
scoop install pipx
# Or with pip (works everywhere)
pip install --user pipx
Then install torrentor:
# Install torrentor via pipx
pipx install torrentor
With Pip
# Install directly from the repository
pip install git+https://github.com/thaikolja/torrentor-cli.git
From Source
# Clone the repository
git clone https://github.com/thaikolja/torrentor-cli.git
# Enter the project folder
cd torrentor-cli
# Create a virtual environment (keeps things isolated)
python -m venv .venv
# Activate it (on Windows use: .venv\Scripts\activate)
source .venv/bin/activate
# Install torrentor
pip install -e .
After installing, the torrentor command is available in your terminal.
How to Use It
There are two ways: interactive mode (guided step-by-step) or direct mode (one command).
Interactive Mode (Easiest)
Just type:
# Start the interactive menu
torrentor
You'll see a menu where you can pick what to do: download a torrent, change your settings, or quit. Everything is guided.
Direct Mode (One Command)
Pass a magnet link, a .torrent file path, or a URL:
# Download from a magnet link
torrentor "magnet:?xt=urn:btih:..."
# Download from a .torrent file on your computer
torrentor ./my-file.torrent
# Download from a URL to a .torrent file
torrentor "https://example.com/file.torrent"
# Download with a custom save location and speed limit
torrentor "magnet:?xt=urn:btih:..." --save-to ~/Movies --max-download 5000
All Available Flags
Everything below is visible when you run torrentor -h. No need to dig into subcommands.
Options (the important ones):
| Flag | Short | Type | What it does |
|---|---|---|---|
--save-to |
-o |
PATH | Where to save the file (Default: ~/Downloads) |
--no-limit |
-n |
TRUE/FALSE | Download at full speed (Default: false) |
--flush-cache |
-f |
Delete all cached/incomplete downloads |
Optional (extra control):
| Flag | Short | Type | What it does |
|---|---|---|---|
--max-download |
-l |
NUMBER | Limit download speed, in kB/s (Default: no limit) |
--max-upload |
-u |
NUMBER | Limit upload speed, in kB/s (Default: no limit) |
--timeout |
-t |
NUMBER | Stop after this many seconds (Default: none) |
Advanced (for power users):
| Flag | Short | Type | What it does |
|---|---|---|---|
--seed |
-s |
TRUE/FALSE | Keep sharing after download (Default: false) |
--in-order |
-q |
TRUE/FALSE | Download from start to finish instead of jumping around (Default: false) |
--check |
-y |
TRUE/FALSE | Check the file for errors after downloading (Default: false) |
--port |
-p |
NUMBER | Network port for peers (Default: 51413) |
--encryption |
-e |
MODE | Connection privacy: required, preferred, or tolerated (Default: preferred) |
--blocklist |
-b |
TRUE/FALSE | Block known bad peers (Default: false) |
Managing Your Settings
Your settings are remembered between sessions. You can view and change them:
# See your current settings
torrentor config
# Change where files are saved
torrentor config set output_dir ~/Movies
# Limit download speed to 5 MB/s
torrentor config set download_limit 5000
# Remove a speed limit
torrentor config set download_limit none
# Reset everything to defaults
torrentor config reset
# Find where the settings file is stored on your computer
torrentor config path
Your settings are saved to a file on your computer:
- macOS / Linux:
~/.config/torrentor/config.json - Windows:
%APPDATA%\torrentor\config.json
What Happens When You Download
Here's what torrentor does behind the scenes:
You paste a magnet link, file path, or URL
│
▼
transmission-cli downloads the file in the background
│ (you see a live progress bar with speed and estimated time)
▼
Download complete: sharing stops automatically
│
▼
The file is packed into a .zip
│ (the filename is cleaned up: "My Movie! (2024)" -> "my-movie-2024.zip")
▼
The .zip is moved to your chosen folder
│
▼
Temporary files are deleted
If the download seems slow, torrentor will let you know after about a minute and suggest things to try.
If something goes wrong (or you press Ctrl+C), you can retry from where you left off: your progress is saved.
Full Command Reference
# Start interactive mode
torrentor
# Download a torrent directly
torrentor "magnet:?xt=urn:btih:..."
# Download with options
torrentor ./file.torrent --save-to ~/Movies --max-download 5000
# Delete cached/incomplete downloads
torrentor --flush-cache
# View your settings
torrentor config
# Change a setting
torrentor config set <key> <value>
# Reset all settings
torrentor config reset
# Show where the settings file is stored
torrentor config path
# Show version
torrentor -V
# Show help (includes all available flags)
torrentor -h
For Developers
See CONTRIBUTING.md for setup instructions, code style, and testing.
# Install development dependencies
pip install -e ".[dev]"
# Run the linter
ruff check .
# Check formatting
ruff format --check .
# Run type checking
mypy torrentor
# Run tests
pytest
# Run tests with coverage report
pytest --cov=torrentor
Author
Kolja Nolte — kolja.nolte@gmail.com
License
MIT: free to use, modify, and distribute.
Project details
Release history Release notifications | RSS feed
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 torrentor_cli-1.0.0.tar.gz.
File metadata
- Download URL: torrentor_cli-1.0.0.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbff5572523ee68b6f4c005338bbb4abddbe82f1d58f5e3dfe66e0ea85cbbfa4
|
|
| MD5 |
c5ca482aaec16a8138cadc55ed3cf8e9
|
|
| BLAKE2b-256 |
898e41652ae75f483f4daa3df318750b2829cb8f7dac21a852a838f98b7583bf
|
File details
Details for the file torrentor_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: torrentor_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20d5281b03d6c55f260726ca596123fd0dfa2a45fabf82acfec5f263c4896eb7
|
|
| MD5 |
689b46a02eb16fe33b252e93d8f93a2f
|
|
| BLAKE2b-256 |
753a0873b424849b3956a36768d9d3d86093b60ab779db2eb5916076df6bb0c3
|