Skip to main content

Search torrents from multiple websites via the CLI

Project description

Torrent Hound

CI PyPI version Python versions License

A terminal-first torrent search CLI. Type a query, get ranked results from multiple trackers in one table, then copy a magnet link or open the torrent page with a single keystroke.

$ torrent-hound ubuntu
                                          PirateBay
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━┳━━━━┳━━━━━━┓
┃ No ┃ Torrent Name                                         ┃      Size ┃  S ┃  L ┃  S/L ┃
┡━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━╇━━━━╇━━━━━━┩
│ 1  │ ubuntu-24.04.1-desktop-amd64.iso                     │  5.78 GiB │ 40 │  2 │ 20.0 │
│ 2  │ Ubuntu 22.04 LTS                                     │   3.4 GiB │ 32 │  1 │ 32.0 │
│ …  │                                                      │           │    │    │      │
└────┴──────────────────────────────────────────────────────┴───────────┴────┴────┴──────┘

Enter command : c1
Magnet link copied to clipboard!

Requirements

  • Python 3.9+
  • Runtime dependencies: beautifulsoup4, requests, pyperclip, rich

Install

Via pipx (recommended)

pipx installs each Python CLI into its own isolated venv and automatically puts the entry point on your $PATH.

pipx install torrent-hound

If you don't already have pipx: brew install pipx (macOS), sudo apt install pipx (Ubuntu/Debian), or python3 -m pip install --user pipx && python3 -m pipx ensurepath.

Via pip

pip install torrent-hound

Whether this lands torrent-hound on your $PATH depends on where pip installed its scripts directory:

  • Inside an active venv: always on PATH while the venv is active.
  • pip install --user (macOS / Linux): scripts go to ~/.local/bin. Add it to PATH if missing:
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc   # or ~/.bashrc
    
    Reload your shell, or run source ~/.zshrc.
  • pip install --user (Windows): scripts go to %APPDATA%\Python\PythonXX\Scripts. Find the exact path with python -m site --user-base, then add that Scripts directory to PATH via System Properties → Environment Variables.
  • System-wide sudo pip install (Linux/macOS): scripts go to /usr/local/bin, which is almost always on PATH. Modern Python distributions may refuse this install with a PEP 668 "externally-managed-environment" error — prefer pipx or a venv instead.

Upgrade later with pip install -U torrent-hound (or pipx upgrade torrent-hound).

Standalone binary (no Python required)

Download the latest pre-built binary for your platform from the Releases page, make it executable, and run it directly:

# macOS / Linux
chmod +x torrent-hound-macos    # or torrent-hound-linux
./torrent-hound-macos ubuntu

# Optionally move it onto your PATH
mv torrent-hound-macos ~/.local/bin/torrent-hound

On Windows, download torrent-hound-windows.exe and run it from the command prompt.

From source

git clone https://github.com/baddymaster/torrent-hound.git
cd torrent-hound

python3 -m venv .venv
source .venv/bin/activate
pip install -e .          # installs deps + puts torrent-hound on PATH

For development (adds pytest + ruff):

pip install -e ".[dev]"

Usage

Interactive mode (default)

torrent-hound ubuntu

Results render as a table; enter a command at the prompt.

Command Action
m<n> Print the magnet link for result <n>
c<n> Copy the magnet link to clipboard
cs<n> Copy the magnet and open Seedr.cc
d<n> Hand the magnet to your default torrent client
o<n> Open the torrent page in your default browser
p Re-print the results table
s Enter a new query and search again
r Repeat the last search
u Show the source URLs used for the current results
h Show the help menu
q Quit

Scripting mode

Non-interactive output, parseable from a pipeline:

# Python-repr output (legacy, --quiet / -q):
torrent-hound -q ubuntu

# JSON output:
torrent-hound --json ubuntu | jq '.tpb.results["0"].magnet'

--json emits a single valid JSON document to stdout and exits.

Development

Running tests

pip install -e ".[dev]"
pytest tests/

The suite runs fully offline (no network calls) — it uses a captured fixture HTML response for parser tests and mocks requests.get for the fallback- chain tests.

Project layout

torrent_hound.py      # single-file entry point
pyproject.toml        # packaging, deps, ruff config, pytest config
tests/                # pytest suite
  conftest.py         # loads torrent_hound.py as a module
  fixtures/           # saved HTML responses for offline parser tests

Troubleshooting

SSL handshake errors: see these Stack Overflow answers for common fixes.

[PirateBay] Error : All known mirrors returned no results or were unreachable: every TPB domain in the fallback chain is blocked or down. Add a known-working mirror to TPB_DOMAINS at the top of torrent-hound.py.

Blocked by Cloudflare captcha: some sources serve a CF challenge that requires a real browser.

Disclaimer

This software is provided as-is, with no warranty of any kind. It is intended for discovering legally-distributable content and is not intended to be used for downloading, distributing, or facilitating access to copyrighted material without authorisation. You are responsible for complying with the laws of your jurisdiction.

License

AGPL-3.0 — see 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

torrent_hound-2.4.1.tar.gz (58.7 kB view details)

Uploaded Source

Built Distribution

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

torrent_hound-2.4.1-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file torrent_hound-2.4.1.tar.gz.

File metadata

  • Download URL: torrent_hound-2.4.1.tar.gz
  • Upload date:
  • Size: 58.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torrent_hound-2.4.1.tar.gz
Algorithm Hash digest
SHA256 4bcbbb795b159c1d4732f8f689f46f26aff5e155b710ccf4ecfecd7b3a18335f
MD5 e11613158f9826b31fc00cef90738d57
BLAKE2b-256 99c295aa853691c31474807ee65c3b0aa22a5fed5ca8004418572bdc1f86965f

See more details on using hashes here.

Provenance

The following attestation bundles were made for torrent_hound-2.4.1.tar.gz:

Publisher: publish.yml on baddymaster/torrent-hound

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torrent_hound-2.4.1-py3-none-any.whl.

File metadata

  • Download URL: torrent_hound-2.4.1-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torrent_hound-2.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 24ee09903902dab95c24f1b2497ef405fdcef3315abdff9c04967ba204c6afe6
MD5 40020d3662283612d9055bba54ff484f
BLAKE2b-256 172005e65eb98a232c72cd6ef796d4c681ad01485562335d32853b103ce6d7cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for torrent_hound-2.4.1-py3-none-any.whl:

Publisher: publish.yml on baddymaster/torrent-hound

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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