{"id":48877261,"url":"https://github.com/baddymaster/torrent-hound","last_synced_at":"2026-05-03T00:07:45.094Z","repository":{"id":53883191,"uuid":"86055643","full_name":"baddymaster/torrent-hound","owner":"baddymaster","description":"Search torrents from multiple websites via the CLI","archived":false,"fork":false,"pushed_at":"2026-04-15T02:41:39.000Z","size":125,"stargazers_count":34,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-04-15T03:25:56.242Z","etag":null,"topics":["bittorrent","cli","magnet-link","python","search-engine","search-torrents","torrent","torrent-search-engine","torrents"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baddymaster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-03-24T10:21:53.000Z","updated_at":"2025-09-16T16:02:18.000Z","dependencies_parsed_at":"2022-09-11T10:00:56.288Z","dependency_job_id":null,"html_url":"https://github.com/baddymaster/torrent-hound","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/baddymaster/torrent-hound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baddymaster%2Ftorrent-hound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baddymaster%2Ftorrent-hound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baddymaster%2Ftorrent-hound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baddymaster%2Ftorrent-hound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baddymaster","download_url":"https://codeload.github.com/baddymaster/torrent-hound/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baddymaster%2Ftorrent-hound/sbom","scorecard":{"id":222856,"data":{"date":"2025-08-11","repo":{"name":"github.com/baddymaster/torrent-hound","commit":"56ad59b206508b88188c6ddf5e5500c2ac30791c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.5 not signed: https://api.github.com/repos/baddymaster/torrent-hound/releases/10346443","Warn: release artifact v1.0 not signed: https://api.github.com/repos/baddymaster/torrent-hound/releases/5857399","Warn: release artifact v1.5 does not have provenance: https://api.github.com/repos/baddymaster/torrent-hound/releases/10346443","Warn: release artifact v1.0 does not have provenance: https://api.github.com/repos/baddymaster/torrent-hound/releases/5857399"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T02:59:32.647Z","repository_id":53883191,"created_at":"2025-08-17T02:59:32.647Z","updated_at":"2025-08-17T02:59:32.647Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31866361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bittorrent","cli","magnet-link","python","search-engine","search-torrents","torrent","torrent-search-engine","torrents"],"created_at":"2026-04-16T01:05:25.041Z","updated_at":"2026-05-03T00:07:45.087Z","avatar_url":"https://github.com/baddymaster.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Torrent Hound\n\n[![CI](https://github.com/baddymaster/torrent-hound/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/baddymaster/torrent-hound/actions/workflows/ci.yml)\n[![PyPI version](https://img.shields.io/pypi/v/torrent-hound.svg)](https://pypi.org/project/torrent-hound/)\n[![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue.svg)](https://github.com/baddymaster/torrent-hound/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)\n\nA terminal-first torrent search CLI. Type a query, get ranked results from\nmultiple trackers in one live table, then act on a row with a single keystroke\n— copy magnet, open page, send to your default torrent client, or hand off\nto Real-Debrid.\n\n```\n$ torrent-hound ubuntu\n\n3 sources  ·  23 results  ·  0.92s  —  'ubuntu'\ntrail: TPB ✓ 10 (180ms)  ·  YTS ✓ 8 (420ms · 1 retry)  ·  EZTV ⚡ 5 cached 3m\nselected: TPB · ubuntu-24.04.1-desktop-amd64.iso\n\n┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━┳━━━━┳━━━━━━┓\n┃ No ┃ Name                                                 ┃      Size ┃  S ┃  L ┃  S/L ┃\n┡━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━╇━━━━╇━━━━━━┩\n│ 1  │ ubuntu-24.04.1-desktop-amd64.iso                     │   5.8 GB  │ 40 │  2 │ 20.0 │ ← amber\n│ 2  │ Ubuntu 22.04 LTS                                     │   3.4 GB  │ 32 │  1 │ 32.0 │\n│ …  │                                                      │           │    │    │      │\n└────┴──────────────────────────────────────────────────────┴───────────┴────┴────┴──────┘\n\nMagnet copied to clipboard\n↑↓ move · ⏎/c copy · cs seedr · o open page · d download · r repeat · rd real-debrid · s search · / filter · q quit\n```\n\n## Sources\n\n| Source         | Content   | Method                      |\n|----------------|-----------|-----------------------------|\n| The Pirate Bay | General   | HTML scrape, mirror chain   |\n| YTS            | Movies    | JSON API, mirror chain      |\n| EZTV           | TV shows  | JSON API via IMDB lookup    |\n\nAll sources are searched in parallel. Each source has a multi-mirror fallback\nchain — if one mirror is down, the next is tried automatically. Results are\ncached for the session (5-minute TTL).\n\n## Requirements\n\n- Python 3.10+\n- Runtime dependencies: `beautifulsoup4`, `requests`, `pyperclip`, `rich`,\n  `platformdirs`, `tomli_w`, `argcomplete`\n\n## Install\n\n```bash\npipx install torrent-hound          # recommended — isolated venv, on PATH\npip install torrent-hound           # plain pip\n```\n\nPre-built standalone binaries (no Python required) for Linux / macOS / Windows\nare on the [Releases page](https://github.com/baddymaster/torrent-hound/releases/latest).\n\nFrom source:\n\n```bash\ngit clone https://github.com/baddymaster/torrent-hound.git\ncd torrent-hound\npip install -e \".[dev]\"             # installs deps + pytest + ruff\n```\n\n### Shell completion\n\nTab-completion is provided by [`argcomplete`](https://github.com/kislyuk/argcomplete).\nAdd one line to your shell config:\n\n**bash** (`~/.bashrc`):\n```bash\neval \"$(torrent-hound --print-completion bash)\"\n```\n\n**zsh** (`~/.zshrc`):\n```zsh\nautoload -U compinit \u0026\u0026 compinit\neval \"$(torrent-hound --print-completion zsh)\"\n```\n\nRestart your shell, then `torrent-hound --\u003cTAB\u003e` cycles through flags.\n\n\u003e **Note:** Completion only works when installed via `pip` / `pipx`. The\n\u003e standalone binary doesn't expose the Python entry point that argcomplete\n\u003e hooks into.\n\n## Usage\n\n```\ntorrent-hound ubuntu\n```\n\nDrops you into a single-screen TUI. Three header rows, results table below,\nmode-aware footer of keystroke hints at the bottom.\n\n### Header\n\n- **Top:** rotating verb spinner (during fetch) → run summary\n  (`3 sources · 23 results · 0.92s — 'ubuntu'`) once results land.\n- **Middle:** `trail:` line — per-source pip with mirror retry detail and\n  inline timing. Persists above the table after fetch completes:\n  ```\n  trail: TPB ✓ 10 (180ms) · YTS ✓ 8 (420ms · 1 retry) · EZTV ⚡ 5 cached 3m\n  ```\n- **Bottom:** `selected: \u003csource\u003e · \u003cname\u003e` of the highlighted row.\n\n### Keystrokes\n\n#### Navigation\n\n| Key     | Action                                                |\n|---------|-------------------------------------------------------|\n| `↑` / `↓` | Move selection (table scrolls when selection goes off-screen) |\n| `?`     | Show / hide the keystroke help overlay                |\n| `q`     | Quit                                                  |\n\n#### Acting on the highlighted row\n\n| Key       | Action                                                              |\n|-----------|---------------------------------------------------------------------|\n| `c` / `⏎` | Copy magnet to clipboard                                            |\n| `cs`      | Copy magnet **and** open Seedr.cc                                   |\n| `m`       | Show the full magnet in an overlay panel (any key returns)          |\n| `v`       | Show normalised metadata for this torrent in an overlay panel       |\n| `o`       | Open the torrent page in your default browser                       |\n| `d`       | Hand the magnet to your default torrent client                      |\n| `rd`      | Real-Debrid: submit, fetch hoster links, dispatch via configured action |\n\n`cs` and `rd` are chord commands — press the prefix (`c` or `r`) and the footer\nshows the available extensions plus the standalone meaning. After ~1 second\nwithout a follow-up, the standalone meaning fires (so `c` alone copies, `r`\nalone repeats the last search).\n\n#### Search \u0026 filter\n\n| Key | Action                                                                     |\n|-----|----------------------------------------------------------------------------|\n| `/` | Enter live filter mode — type to narrow visible results, arrows still nav  |\n| `s` | Enter new-search mode — type a new query, `⏎` to fetch                     |\n| `r` | Repeat the current search (cached sources reused; failed sources retry)    |\n\nIn filter mode, `⏎` accepts the filter and exits to the results table; `Esc`\nclears it.\n\n### Scripting mode\n\n```bash\ntorrent-hound --json ubuntu | jq '.tpb.results[\"0\"].magnet'\ntorrent-hound --quiet ubuntu                     # plain Python repr to stdout\n```\n\nEither flag bypasses the TUI entirely and exits after printing.\n\n## Real-Debrid integration\n\nSend the highlighted torrent to [Real-Debrid](https://real-debrid.com) and\nhand the resulting direct link to your download manager.\n\n### Setup\n\n```bash\ntorrent-hound --configure-rd\n```\n\nPrompts for your API token (get one at\n[real-debrid.com/apitoken](https://real-debrid.com/apitoken)) and the action\nto run against returned direct links, then writes them to a config file\nwith restrictive permissions (0600 on the file, 0700 on the parent).\n\nFor ad-hoc use without saving anything:\n\n```bash\nexport RD_TOKEN=\"...\"\n```\n\n### Action modes\n\n| Mode        | What happens with the direct link(s)                                                    |\n|-------------|-----------------------------------------------------------------------------------------|\n| `clipboard` | *(default)* Copied to clipboard. Multiple links are joined with newlines.               |\n| `print`     | Printed to stdout.                                                                      |\n| `browser`   | Opened in your default browser (works without a separate download manager).             |\n| `downie`    | Sent to [Downie 4](https://software.charliemonroe.net/downie/) via its `downie://` URL scheme (macOS). |\n\n### Convenience flags\n\n```bash\ntorrent-hound --configure-rd      # interactive setup (token + action)\ntorrent-hound --config-path       # print the resolved config file path\ntorrent-hound --user-status       # show RD account info (premium, expiration, points)\ntorrent-hound --revoke-rd-token   # invalidate the current token on RD\n```\n\n### Config file\n\nPath:\n- macOS: `~/Library/Application Support/torrent-hound/config.toml`\n- Linux: `~/.config/torrent-hound/config.toml`\n- Windows: `%APPDATA%\\torrent-hound\\config.toml`\n\nManaged by `--configure-rd`, but plain TOML if you ever want to edit directly:\n\n```toml\n[real_debrid]\ntoken  = \"XXXXXXXXXXXXXXXXXXXXXXXXXXXX\"\naction = \"downie\"\n```\n\n### Usage\n\nAfter a search, navigate to a row, press `rd`. The TUI shows a spinner while\nthe worker submits to RD, waits for hoster links, and runs your configured\naction. Multi-file torrents (season packs, multi-part archives) trigger an\nin-app picker overlay:\n\n| Key       | Action                              |\n|-----------|-------------------------------------|\n| `↑` / `↓` | Move cursor through file list       |\n| `space`   | Toggle current row's checkbox       |\n| `a`       | Toggle all (mark all / clear all)   |\n| `⏎`       | Confirm selection                   |\n| `Esc`     | Cancel the RD operation             |\n\nAll files start marked, so confirming with `⏎` immediately is equivalent to\n\"all\" in the legacy text picker. Outcome (success or error) lands as a toast\non the results screen — no terminal hand-off, no \"press enter to return\".\n\nIf RD is still processing (common for larger uncached torrents), the toast\nasks you to run `rd` again — re-running picks up where it left off without\nre-prompting the picker, since RD remembers the prior file selection.\n\n### Troubleshooting\n\n- `Real-Debrid rejected the token` — run `torrent-hound --configure-rd`.\n- Connectivity errors (`DNS lookup failed`, `block page`, geo-block) — your\n  ISP / network / proxy is filtering the RD API. Try a VPN or DoH resolver\n  (`1.1.1.1`, `8.8.8.8`).\n- Anything else — `torrent-hound --user-status` to check account state.\n  Specific error messages reference RD's documented `error_code` values.\n\n## Development\n\n```bash\npip install -e \".[dev]\"\npytest tests/\nruff check .\n```\n\nTests run fully offline — parser fixtures are captured HTML, network calls\nare mocked. The TUI is unit-tested at the `read_key` and `handle_key` layers\n(see `tests/test_tui.py`); the rich.live event loop is manual-tested only.\n\nOptional pre-commit hook (runs ruff + the test suite before every commit):\n\n```bash\npre-commit install\n```\n\n### Package layout\n\n```\ntorrent_hound/\n  cli.py         — argparse + main() entry point\n  tui.py         — rich.live TUI (single-screen app)\n  state.py       — shared mutable state (results, urls, should_exit)\n  cache.py       — per-session result cache\n  config.py      — TOML config + Real-Debrid setup commands\n  realdebrid.py  — RD API client + the rd flow\n  ui.py          — rich Console singleton + table builders + JSON output\n  sources/\n    __init__.py  — _SOURCES registry + searchAllSites orchestrator\n    base.py      — Source Protocol + shared helpers\n    tpb.py       — The Pirate Bay\n    yts.py       — YTS\n    eztv.py      — EZTV\n    legacy_1337x.py — dormant; kept for re-enable when CF landscape changes\n```\n\n### Adding a source\n\n1. Create `torrent_hound/sources/foo.py` — implement `searchFoo(search_string,\n   quiet_mode, limit, timeout, progress)` returning a list of result dicts\n   with keys `name`, `link`, `seeders`, `leechers`, `size`, `ratio`, `magnet`.\n   Call `progress({\"type\": \"mirror_attempt\", \"mirror\": ...})` etc. so the\n   trail line lights up.\n2. Register in `sources/__init__.py._SOURCES`.\n3. Add a parser test in `tests/test_foo_parser.py`.\n\n## Troubleshooting\n\n- **SSL handshake errors:** see [these Stack Overflow answers](https://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure)\n  for common fixes.\n- **`[PirateBay] Error : All known mirrors returned no results or were\n  unreachable`:** every TPB domain in the fallback chain is blocked or down.\n  Add a known-working mirror to `TPB_DOMAINS` in `torrent_hound/sources/tpb.py`.\n- **Blocked by Cloudflare captcha:** some sources serve a CF challenge that\n  requires a real browser. 1337x is currently dormant for this reason.\n- **Arrow keys not working / ESC press doesn't cancel filter:** your terminal\n  may be delivering escape sequences slowly. The TUI probes for 50ms after\n  `\\x1b` to distinguish bare ESC from arrow keys; if your terminal is slower\n  than that, bump `_ESC_PROBE_SECONDS` at the top of `torrent_hound/tui.py`.\n\n## Disclaimer\n\nThis software is provided as-is, with no warranty of any kind. It is intended\nfor discovering legally-distributable content and is **not** intended to be\nused for downloading, distributing, or facilitating access to copyrighted\nmaterial without authorisation. You are responsible for complying with the\nlaws of your jurisdiction.\n\n## License\n\nAGPL-3.0 — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaddymaster%2Ftorrent-hound","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaddymaster%2Ftorrent-hound","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaddymaster%2Ftorrent-hound/lists"}