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!

Sources

Source Content Method
The Pirate Bay General HTML scrape, mirror fallback
YTS Movies JSON API, mirror fallback
EZTV TV shows JSON API via IMDB lookup

All sources are searched in parallel.

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.2.tar.gz (59.0 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.2-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: torrent_hound-2.4.2.tar.gz
  • Upload date:
  • Size: 59.0 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.2.tar.gz
Algorithm Hash digest
SHA256 76d201bb4c585d97789d3dc6220ff5f219b274d787c947bad7900950ab3b53e9
MD5 3228e4173833703768bcf36d24c9d671
BLAKE2b-256 99c4b0951773ac9959f0ed0a997838414175a96d79190e39d6ee6c322edb5fb6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: torrent_hound-2.4.2-py3-none-any.whl
  • Upload date:
  • Size: 25.0 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3e9a771048f239b472b240f7ae419d7b06ab369cab44805d873237f707cda866
MD5 74a56fe5cf59a329ff63942d182a9ebc
BLAKE2b-256 7be4cb9e6c3ee738cc4be22d35d80593a411bbba7ef8060bd184fa94de593fcd

See more details on using hashes here.

Provenance

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