feat: add qBittorrent download client integration

Send Prowlarr search results directly to qBittorrent from the modal.
Backend authenticates via SID cookie (login + add torrent endpoints).

- Backend: qbittorrent module with add and test endpoints
- Migration: add qbittorrent settings (url, username, password)
- Settings UI: qBittorrent config card with test connection
- ProwlarrSearchModal: send-to-qBittorrent button per result row
  with spinner/checkmark state progression
- Button only shown when qBittorrent is configured

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-19 21:51:28 +01:00
parent 57bc82703d
commit c04d4fb618
11 changed files with 493 additions and 1 deletions

View File

@@ -491,6 +491,18 @@ const en: Record<TranslationKey, string> = {
"prowlarr.notConfigured": "Prowlarr is not configured",
"prowlarr.download": "Download",
"prowlarr.info": "Info",
"prowlarr.sendToQbittorrent": "Send to qBittorrent",
"prowlarr.sending": "Sending...",
"prowlarr.sentSuccess": "Sent to qBittorrent",
"prowlarr.sentError": "Failed to send to qBittorrent",
// Settings - qBittorrent
"settings.qbittorrent": "qBittorrent",
"settings.qbittorrentDesc": "Configure qBittorrent as a download client. Torrents found via Prowlarr can be sent directly to qBittorrent.",
"settings.qbittorrentUrl": "qBittorrent URL",
"settings.qbittorrentUrlPlaceholder": "http://localhost:8080",
"settings.qbittorrentUsername": "Username",
"settings.qbittorrentPassword": "Password",
// Settings - Language
"settings.language": "Language",