Add torrent download backend to shanty-dl #17

Open
opened 2026-03-17 16:37:18 -04:00 by connor · 0 comments
Owner

Add a torrent-based download backend to shanty-dl as an alternative to yt-dlp. This would allow users to download music from torrent sources, which often have higher quality (lossless FLAC) than YouTube.

  1. Transmission RPC client — integrate with Transmission (a popular torrent client) via its RPC API:

    • Add a torrent by URL or magnet link
    • Monitor download progress
    • Get the downloaded file path when complete
    • Configure download directory
  2. Torrent search:

    • Integrate with Jackett/Prowlarr (torrent indexer aggregators that many self-hosters already run) to search multiple indexers
  3. Backend registration — implement the DownloadBackend trait from Issue #7 for the torrent backend. The download manager should be able to route requests to the appropriate backend. May require additional thought towards queueing and downloads that hang.

  4. Post-download processing — torrents may download entire albums. After download:

    • Identify which files are audio files
    • Index them into the database
    • Organize them according to the user's format template

Acceptance Criteria

  • Torrent backend implements the DownloadBackend trait
  • Can add torrents via magnet link or .torrent URL through Transmission RPC
  • Download progress is tracked and queryable
  • Downloaded audio files are identified and indexed
  • Configuration for Transmission connection (host, port, auth) exists
  • Falls back gracefully if Transmission is not available

Dependencies

  • Issue #7 (download system with trait-based backends)
  • External: Transmission daemon must be running
Add a torrent-based download backend to `shanty-dl` as an alternative to yt-dlp. This would allow users to download music from torrent sources, which often have higher quality (lossless FLAC) than YouTube. 1. **Transmission RPC client** — integrate with Transmission (a popular torrent client) via its RPC API: - Add a torrent by URL or magnet link - Monitor download progress - Get the downloaded file path when complete - Configure download directory 1. **Torrent search**: - Integrate with Jackett/Prowlarr (torrent indexer aggregators that many self-hosters already run) to search multiple indexers 3. **Backend registration** — implement the `DownloadBackend` trait from Issue #7 for the torrent backend. The download manager should be able to route requests to the appropriate backend. May require additional thought towards queueing and downloads that hang. 4. **Post-download processing** — torrents may download entire albums. After download: - Identify which files are audio files - Index them into the database - Organize them according to the user's format template ### Acceptance Criteria - [ ] Torrent backend implements the `DownloadBackend` trait - [ ] Can add torrents via magnet link or .torrent URL through Transmission RPC - [ ] Download progress is tracked and queryable - [ ] Downloaded audio files are identified and indexed - [ ] Configuration for Transmission connection (host, port, auth) exists - [ ] Falls back gracefully if Transmission is not available ### Dependencies - Issue #7 (download system with trait-based backends) - External: Transmission daemon must be running
connor added the LowPriority label 2026-03-19 12:28:48 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Shanty/Main#17