Commit Graph

14 Commits

Author SHA1 Message Date
dev 56a210b4b7 fix: subtitle embedding broken via Python API
Docker / docker (push) Successful in 1m38s
embedsubtitles:True is a CLI-only option — it registers FFmpegEmbedSubtitlePP
only via __init__.py's opts processing, not when using YoutubeDL() directly.
Must explicitly declare the postprocessor via the 'postprocessors' key.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 17:41:12 +02:00
dev 32f2d412ed fix: subtitle embedding and MKV title not applied
Docker / docker (push) Successful in 1m36s
postprocessor_args keys must be lowercase — cli_configuration_args does
key.lower() for lookup but the dict is case-sensitive, so "ffmpeg_o" and
"EmbedSubtitle+ffmpeg_o" never matched. Use "merger+ffmpeg_o" for title
during merge, "embedsubtitle+ffmpeg_o" for title+disposition during embed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 17:19:14 +02:00
dev 09457868e4 fix: resume interrupted downloads after container restart
Docker / docker (push) Successful in 1m22s
Store subtitle/year/category in downloads table. On startup, re-queue
any download still in queued/downloading state (reset downloading → queued).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 14:03:31 +02:00
dev ec61b1684a feat: set MKV internal title to "Artist - Concert (year)"
Docker / docker (push) Successful in 1m23s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 12:05:10 +02:00
dev e1a2dd1685 feat: VOSTFR/VO/FRENCH detection and subtitle embedding
Docker / docker (push) Successful in 1m32s
Query Arte Player API before each download to determine available stream
versions. Select lang tag (VOSTFR > VO, FRENCH if audio is fr). Embed
French subtitles as default MKV track when VOSTFR. All output now .mkv.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 12:01:48 +02:00
dev a4273557ad feat: queue de téléchargement séquentielle (un à la fois)
Docker / docker (push) Successful in 1m38s
asyncio.Queue dans DownloadManager + worker unique démarré dans le lifespan.
Les téléchargements s'exécutent un par un dans l'ordre d'arrivée.
Suppression de BackgroundTasks (plus nécessaire).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 11:30:07 +02:00
dev a4ffd6d63e fix: DB sur volume persistant + verrou anti-scrapes parallèles
Docker / docker (push) Successful in 3m1s
- DB_PATH → data/arte_dl.db (mappé sur /mnt/user/appdata/arte-dl)
- mkdir data/ au démarrage dans downloader.py et arte_api.py
- asyncio.Lock sur get_all_concerts() : une seule scrape à la fois,
  les requêtes concurrentes attendent le résultat au lieu de relancer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 20:43:01 +02:00
dev 189b65bd6d feat: auto-téléchargement par catégorie avec souscription persistante
Docker / docker (push) Has been cancelled
- Bouton ⬇ sur chaque pill de catégorie pour activer/désactiver l'auto-DL
- Souscriptions sauvegardées en SQLite (table auto_dl_categories)
- Boucle background toutes les AUTO_DL_INTERVAL secondes (défaut 1h)
- Déduplication via already_enqueued() (évite re-queue si déjà queued/done)
- POST /api/auto-dl/check pour déclencher un check immédiat
- GET/POST/DELETE /api/auto-dl/{category} pour gérer les souscriptions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 19:23:57 +02:00
dev f07352bd04 feat: téléchargement dans sous-dossiers par catégorie
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 19:16:36 +02:00
dev 978a54a25f fix: WEBRip → WEB-DL (HLS direct download, no re-encode)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 19:15:40 +02:00
dev b751b2e51c fix: suppression de FRENCH du nom de release (concerts)
Docker / docker (push) Successful in 1m11s
2026-04-26 13:50:10 +02:00
dev 124afb6d20 feat: nommage UNFR -ReMoRa automatique après téléchargement
Docker / docker (push) Has been cancelled
Format : Title.Event.Year.FRENCH.Resolution.WEBRip.x264|HEVC.AAC-ReMoRa.mp4

- build_release_name() : slugify avec strip accents, apostrophe→point,
  déduplique l'année si présente dans le titre ET passée séparément,
  détecte la résolution et le codec depuis les infos yt-dlp
- enqueue() : reçoit subtitle + year depuis l'API
- _run() : renomme le fichier après download, met à jour le filename en DB
- DownloadRequest : subtitle + year ajoutés
- app.js : extrait l'année du subtitle via regex avant d'envoyer la requête

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:48:56 +02:00
dev 1b8833fbd3 fix: téléchargement et progression
Docker / docker (push) Successful in 1m16s
- Format yt-dlp corrigé : Arte sert l'audio en mp4 pas m4a, l'ancien
  sélecteur échouait immédiatement avec ExtractorError
- Progression basée sur downloaded_bytes/total_bytes_estimate (plus
  fiable pour HLS que _percent_str)
- finished_once : empêche le flux audio de remettre la progression à 0%
  après que le flux vidéo soit terminé

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:48:29 +02:00
dev eadc242173 feat: initial implementation — Arte Concert web GUI
Docker / docker (push) Successful in 2m50s
FastAPI backend + HTML/JS frontend pour parcourir et télécharger les
concerts Arte Concert. Cache 6h, recherche live, historique SQLite,
suivi de progression SSE, design sombre Playfair Display + Inter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 18:36:00 +02:00