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.0.tar.gz (57.6 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.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: torrent_hound-2.4.0.tar.gz
  • Upload date:
  • Size: 57.6 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.0.tar.gz
Algorithm Hash digest
SHA256 3c7c5a3b6bc1314d4f79cd230c7b363af33889ce60cda6758a6220e067e5f704
MD5 288681b4c4ba89fb7bcdb26cfdf4c45b
BLAKE2b-256 c33e23e26cf6105cf5a42c955ec79417b54e15e48bca33343bdc63e6eab5f826

See more details on using hashes here.

Provenance

The following attestation bundles were made for torrent_hound-2.4.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: torrent_hound-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 24.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf099076368a511aae3c4c4ba70e5131c41ae0e59ba64aaaa74f729a3eb5e94f
MD5 6898df4d5e1437d4a5b25887c3d2d499
BLAKE2b-256 3cfa50a83405eb4e21e4d60ea928920125857669dfeaf94701cca48f4c7241fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for torrent_hound-2.4.0-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