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).

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.2.2.tar.gz (23.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.2.2-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: torrent_hound-2.2.2.tar.gz
  • Upload date:
  • Size: 23.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.2.2.tar.gz
Algorithm Hash digest
SHA256 22728729ca74a751893b765daea47503c2bab63f9e8d80bb640fc661f3e27f29
MD5 e3156e292e46b43bd41212d1ccf41503
BLAKE2b-256 f8382f71f4f138940dd40df5347abea7a9decc8ec6e9752691d01b87253e113a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: torrent_hound-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 21.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.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5920660895fbc2ea4b0e61c94840f8d02fa48d6c2254f42c9d31d31cad231a4a
MD5 b366fa957d79f1735bfc1d588cc5046f
BLAKE2b-256 51119452a89b6d6d9c92bfe16874b13599fdfed5c41b18b27b573f6e57f90bca

See more details on using hashes here.

Provenance

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