Installation guidée + intégration bibliothèque Plex/Sonarr

- scripts/install.sh : premier setup interactif (destination des épisodes,
  port, secrets auto-générés, montage, démarrage) — options --dir/--port/
  --skip-login pour une install non interactive
- Épisodes rangés par animé sur le disque : <Animé>/<Animé> - E12 (VOSTFR).mp4
  (meilleur parsing Plex, suppression du dossier quand il se vide)
- Entrypoint : chown récursif uniquement si le dossier de téléchargements est
  vide — une bibliothèque Plex/Sonarr existante n'est jamais modifiée
- Scan disque récursif (sous-dossiers par animé restaurés)
- README : installation guidée + section « Bibliothèque Plex / Sonarr »
This commit is contained in:
Roman
2026-09-22 12:38:18 +00:00
parent 9500a84a5e
commit 1f326d34dd
6 changed files with 294 additions and 33 deletions
+17
View File
@@ -6,6 +6,7 @@ import pytest
from aiohttp import web
from app.config import get_settings
from app.db import db
from app.services.downloads import download_manager as dm
PAYLOAD = b"x" * 500_000
@@ -132,3 +133,19 @@ async def test_delete_active(file_server, manager):
download_dir = get_settings().download_dir
assert not (download_dir / filename).exists()
assert not (download_dir / (filename + ".part")).exists()
async def test_series_subfolder_and_scan(file_server, manager):
"""Les épisodes sont rangés dans un sous-dossier par animé, restaurés au scan."""
d = await dm.enqueue(f"{file_server}/video.mp4", "http://page", "Anime Z - E7 (VOSTFR)")
data = await _wait_status(d["id"], {"done", "failed"})
assert data["status"] == "done", data.get("error")
assert data["file_path"] == "Anime Z/Anime Z - E7 (VOSTFR).mp4"
assert (get_settings().download_dir / data["file_path"]).read_bytes() == PAYLOAD
# DB vidée + redémarrage → le fichier en sous-dossier est restauré tel quel
await db.execute("DELETE FROM downloads")
await dm.stop()
await dm.start()
items = await dm.list_all()
paths = [i["file_path"] for i in items] # d'autres fichiers de tests peuvent trainer
assert "Anime Z/Anime Z - E7 (VOSTFR).mp4" in paths