Integrate upstream PR #175 (TorrentLeech adapter + others) - #1
Merged
Conversation
### Zenith (znth.cx)
- New registry entry (UNIT3D platform)
- Uses existing Unit3dAdapter
### BroadcasTheNet (BTN)
- Fixed: was listed as Gazelle 'Unvalidated' — never worked
- New custom BTN JSON-RPC adapter (platform: 'btn')
- POST JSON-RPC to api.broadcasthe.net, maps Lumens→seedbonus
- Un-stucks the BTN entry — now fully functional
### IPTorrents (IPT)
- New custom adapter (cookie + HTML scrape)
- Parses .tTipWrap/.tTip header stats and .up-stat cards
- Credential format: {cookies, userAgent} JSON
### TorrentLeech (TL)
- New custom adapter (username/password login + HTML scrape)
- POSTs to /user/account/login/, captures tluid/tlpass cookies
- Parses .profile-*-details spans from profile page
- Credential format: {username, password} JSON
### Files
- 7 new files, 6 edited files
- All 2848 tests pass (78 new)
- TypeScript and biome lint clean
H1: mark Class, Lumens, Bonus, HnR, JoinDate as optional in BtnUserInfoResult. use nullish coalescing fallbacks in mapBtnResult so adapter degrades gracefully if BTN changes API response shape. H2: replace BigInt(parseInt()) with BigInt(string) to preserve full precision for byte values exceeding Number.MAX_SAFE_INTEGER. add test for missing optional fields scenario. Fixes: QA H1+H2
parseBytes: return 0n for ∞/Inf/-∞/-Inf values so UNIT3D trackers (e.g. zenith) that return infinite buffer don't crash the poll with 'Invalid byte format' error. iptorrents: inspect Location header on 302 rather than throwing session-expired on every redirect. iptorrents 302s logged-in users from / to /t — only throw when redirected to a login page. follow non-login redirects up to 3 hops. add 6 new tests (4 parseBytes ∞ variants, 2 ipt redirect). 2855 total tests pass, tsc clean. Fixes: 86bae41991a748
- H1: Handle infinity values case-insensitively (e.g. 'inf', 'INF'). - H2: Fix relative redirect resolution in IPTorrents fetchHtml. - Added tests for case-insensitive infinity and path-relative redirects. Fixes: 86bae41991a748
…rrents, TorrentLeech adapters) Taken whole rather than extracting only TorrentLeech: all four adapters touch the same shared files (src/lib/adapters/index.ts, adapters/constants.ts, lib/parser.ts). Cherry-picking TL alone would leave this fork carrying divergent copies of those, which conflicts when upstream merges jordanlambrecht#175. Taking the branch whole makes that future merge a no-op. Upstream PR: jordanlambrecht#175
Set version to 2.8.9-homelab.1. release.yml only publishes when package.json's version has no matching GitHub Release, so fork builds need a distinct version or no image is produced. The -homelab.N suffix also keeps our tags from colliding with upstream release tags. Add FORK.md covering lineage, branch strategy, the upstream sync procedure, and the deltas we carry. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pulls in upstream PR #175 whole, as the base for our TorrentLeech work.
Why the whole PR and not just TorrentLeech: all four adapters in jordanlambrecht#175 touch the same shared files (
src/lib/adapters/index.ts,adapters/constants.ts,lib/parser.ts). Extracting TL alone would leave this fork carrying divergent copies of those, which conflicts when upstream merges jordanlambrecht#175. Taken whole, that future merge is a no-op. The extra adapters (Zenith, BTN fix, IPTorrents) are additive and never execute unless those trackers are configured.Still to do in this fork —
parseTlProfile()stubs three fields:hitAndRuns: null← the reason we forked; needs a logged-in profile capturerequiredRatio: nullwarned: null(feeds thewarnednotification event)🤖 Generated with Claude Code