Ohm comme client de téléchargement Sonarr (API compatible qBittorrent)

- /api/v2/* : login SID (mot de passe = clé Torznab), app/version,
  torrents/info (progression temps réel), properties (content_path),
  add (rejoue le grab encodé dans le .torrent de service, dédupliqué
  par infohash SHA-1), delete (± fichiers), pause/resume
- Les grabs Sonarr sont marqués « sonarr:<hash>| » dans source_key →
  suivis de bout en bout : Sonarr importe, renomme et range les épisodes
  dans sa bibliothèque, puis retire le torrent de la file Ohm
- L'indexeur Torznab embarque les paramètres du grab dans l'announce
- README : nouveau mode « client de téléchargement » recommandé (Remote
  Path Mapping documenté), blackhole en variante minimale
- 3 nouveaux tests (flux complet add → suivi → import → delete)
This commit is contained in:
Roman
2026-09-22 16:42:12 +00:00
parent 1f326d34dd
commit 4e1faf4cd9
9 changed files with 536 additions and 33 deletions
+29 -7
View File
@@ -133,9 +133,10 @@ Variables d'environnement (préfixe `OHM_`, voir `.env.example`) :
## Intégration Sonarr / Prowlarr (*arr)
OhmStreaming expose une **API Torznab** : la suite *arr le voit comme un indexeur
de plus, et chaque grab Sonarr déclenche l'extraction + le téléchargement dans
la file interne (les épisodes arrivent dans la bibliothèque OhmStreaming).
OhmStreaming expose une **API Torznab** (indexeur) **et une API compatible
qBittorrent** (client de téléchargement) : Sonarr peut lui déléguer toute la
chaîne — recherche, téléchargement, puis **import et renommage automatiques**
dans la bibliothèque Sonarr.
### 1. OhmStreaming comme indexeur
@@ -150,13 +151,34 @@ Dans **Admin → Intégrations Sonarr / Prowlarr**, copier :
puis synchroniser vers Sonarr.
- **Sonarr** (direct) : Settings → Indexers → Add → *Torznab* → coller URL + clé.
Catégories : TV (5000) / Anime (5070).
- **Client de téléchargement** : « Torrent Blackhole » — Sonarr enregistre le
`.torrent` de service tandis qu'OhmStreaming télécharge réellement l'épisode
(extraction embed → HLS/HTTP → mp4 dans `downloads/`).
Endpoints : `t=caps`, `t=tvsearch` (q, season, ep), `t=search` — auth par
`?apikey=` ou en-tête `X-Api-Key`.
### 2. OhmStreaming comme client de téléchargement (recommandé)
Dans Sonarr : **Settings → Download Clients → Add → qBittorrent** :
| Champ | Valeur |
|---|---|
| Host | `http://<hote-ohm>:8777` |
| Username | `ohm` |
| Password | la clé API Torznab (Admin → Intégrations) |
Le flux complet devient : Sonarr grab → Ohm télécharge (progression visible
dans la file Sonarr) → Sonarr **importe, renomme et range** l'épisode dans sa
bibliothèque selon ses propres règles → le « torrent » est retiré de la file
Ohm (fichier inclu si « Remove Completed » est coché).
**Chemin d'accès** : Ohm annonce les fichiers sous `/downloads/<Animé>/…`
(chemin conteneur). Si Sonarr tourne dans Docker sans ce montage, ajouter un
*Remote Path Mapping* : hôte = `<hote-ohm>`, distant = `/downloads`, local =
le dossier hôte monté (ex. `/plex_videos/ohm`).
Variante minimale sans import : client « Torrent Blackhole » — Sonarr pose le
`.torrent` de service et l'épisode reste dans la bibliothèque OhmStreaming
seulement (pas d'import/renommage Sonarr).
### 2. « Pour toi » personnalisé par Sonarr
Toujours dans **Admin → Intégrations**, renseigner l'URL Sonarr
@@ -187,6 +209,6 @@ app/
## Tests
```bash
uv run pytest # 83 tests
uv run pytest # 86 tests
uv run ruff check . # lint
```