Compatibilité Sonarr : flux RSS Torznab, catégories qBittorrent, save_path, TLS auto-signé

- torznab : tvsearch sans q sert les nouveautés (RSS sync + test Sonarr)
  au lieu d'une erreur 400 — ajoute TorznabService.latest_releases()
- qbit : POST /torrents/createCategory + GET /torrents/categories stateful
  (Sonarr crée sa catégorie tv-sonarr puis la revérifie)
- qbit : /app/preferences expose save_path=/downloads (health Sonarr)
- sonarr : verify=False sur httpx — reverse proxy swizzin en certificat
  auto-signé (usage LAN)
This commit is contained in:
roman
2026-09-22 18:25:03 +00:00
parent 4e1faf4cd9
commit 853b4e0866
4 changed files with 40 additions and 5 deletions
+12 -2
View File
@@ -88,7 +88,7 @@ async def webapi_version() -> Response:
@router.get("/api/v2/app/preferences", dependencies=[Depends(_require_sid)])
async def app_preferences() -> dict:
return {}
return {"save_path": "/downloads"}
@router.get("/api/v2/transfer/info", dependencies=[Depends(_require_sid)])
@@ -180,9 +180,19 @@ async def torrents_properties(hash: str) -> dict:
}
_categories: dict[str, dict] = {}
@router.get("/api/v2/torrents/categories", dependencies=[Depends(_require_sid)])
async def torrents_categories() -> dict:
return {}
return _categories
@router.post("/api/v2/torrents/createCategory", dependencies=[Depends(_require_sid)])
async def torrents_create_category(category: str = Form(""), savePath: str = Form("")) -> Response:
if category:
_categories[category] = {"name": category, "savePath": savePath}
return _plain("Ok.")
@router.get("/api/v2/torrents/tags", dependencies=[Depends(_require_sid)])