Torznab : recherche anime Sonarr (numéro absolu) + titre de release aligné sur la requête
docker / build-push (push) Successful in 27s

- t=search&q=Titre 02 : le numéro absolu suffixé par Sonarr est extrait et
  utilisé comme filtre épisode, au lieu de partir tel quel au scraper
  (chaîne introuvable → résultats parasites)
- le titre des releases reprend la requête Sonarr (titre/alias TVDB) plutôt
  que le titre du scraper : Sonarr reconnaît sa série au lieu de rejeter
  en « Unknown Series »
This commit is contained in:
Roman
2026-09-27 11:10:06 +00:00
parent 28877bda4f
commit 2581372af8
2 changed files with 54 additions and 2 deletions
+31
View File
@@ -128,6 +128,37 @@ async def test_torznab_tvsearch_all_episodes(client, apikey, fake_source):
assert "Frieren S02E01 VOSTFR WEB-DL" in titles
async def test_torznab_anime_search_absolute_episode(client, apikey, fake_source):
# Requête anime Sonarr : t=search&q=Titre 02 (numéro absolu suffixé au titre)
r = await client.get(
"/torznab/api", params={"t": "search", "q": "Frieren 02", "apikey": apikey}
)
assert r.status_code == 200
root = ET.fromstring(r.text)
items = root.findall(".//item")
assert len(items) == 1
assert items[0].find("title").text == "Frieren S01E02 VOSTFR WEB-DL"
async def test_torznab_release_title_uses_sonarr_query(client, apikey, fake_source):
# Le titre publié reprend la requête Sonarr (titre/alias TVDB), pas le titre
# du scraper : sinon Sonarr rejette la release en « Unknown Series ».
r = await client.get(
"/torznab/api",
params={
"t": "tvsearch",
"q": "Frieren: Beyond Journey's End",
"season": 1,
"ep": 2,
"apikey": apikey,
},
)
root = ET.fromstring(r.text)
items = root.findall(".//item")
assert len(items) == 1
assert items[0].find("title").text == "Frieren: Beyond Journey's End S01E02 VOSTFR WEB-DL"
async def test_torznab_search_without_query_serves_latest(client, apikey, fake_source):
# Sans q : flux RSS des nouveautés (RSS sync / test Sonarr), pas une erreur 400.
async def fake_latest():