Administration native sur le Mac, réencodage sélectif et aide intégrée
- admin.sh : RTG lancé directement sur le Mac (plus de conteneur), nginx joint l'interface par host.docker.internal:8765 ; variante conteneur conservée (admin-docker.sh, docker-compose-conteneur.yml) - Compression : réglages lus dans les fichiers (CRF, codec), refaire seulement le 1080p ou le 720p, seulement si les réglages ont changé ; réglages vidéo propres à chaque voyage ; « Compression actuelle » affichée - Plus d'arrêt automatique après 2 h d'inactivité (--arret-inactif, 0 par défaut) ; arrêt propre qui attend la fin des encodages en cours - Aide contextuelle dans l'interface (rtg/interface/aide) ; README centré sur l'installation et la mise en place - Cœurs attribués au conteneur détectés (cgroup) et signalés Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
This commit is contained in:
1 parent
b54ae69b19
commit
ada3d76f50
38 files changed
+1067
-264
No files matched your search
+12
-5
@@ -46,8 +46,11 @@ def _sources_disponibles(voyage, liste):
|
||||
return True
|
||||
|
||||
|
||||
def generer_voyage(voyage, racine, site_cfg, compression=True, force=False, suivi=None):
|
||||
"""Toute la chaîne pour un voyage. `suivi(evenement)` (interface) reçoit
|
||||
def generer_voyage(voyage, racine, site_cfg, compression=True, force=False, suivi=None,
|
||||
paliers=("hd", "sd"), refaire="manquantes", force_videos=None):
|
||||
"""Toute la chaîne pour un voyage. `force` refait photos web et pages, et
|
||||
aussi les vidéos sauf si force_videos=False (l'interface choisit alors les
|
||||
vidéos à refaire par `refaire`). `suivi(evenement)` (interface) reçoit
|
||||
{"etape": …} au début de chaque étape et {"video": …} pendant la compression."""
|
||||
cfg = reglages_voyage(voyage, site_cfg)
|
||||
nom = os.path.relpath(voyage, racine)
|
||||
@@ -80,7 +83,8 @@ def generer_voyage(voyage, racine, site_cfg, compression=True, force=False, suiv
|
||||
if suivi:
|
||||
def progression(fichier, etat, pct, rang):
|
||||
suivi({"video": fichier, "etat": etat, "pct": pct, "rang": rang})
|
||||
video.compresser(voyage, cfg, a, force=force, progression=progression)
|
||||
video.compresser(voyage, cfg, a, force=force if force_videos is None else force_videos,
|
||||
progression=progression, paliers=paliers, refaire=refaire)
|
||||
elif not compression:
|
||||
dire("⏭️ Compression sautée.")
|
||||
|
||||
@@ -92,7 +96,8 @@ def generer_voyage(voyage, racine, site_cfg, compression=True, force=False, suiv
|
||||
return ok
|
||||
|
||||
|
||||
def generer(racine, voyages=None, compression=True, force=False, mymaps_maj=False, suivi=None):
|
||||
def generer(racine, voyages=None, compression=True, force=False, mymaps_maj=False, suivi=None,
|
||||
paliers=("hd", "sd"), refaire="manquantes", force_videos=None):
|
||||
racine = os.path.abspath(racine)
|
||||
cfg = reglages_site(racine)
|
||||
liste = [os.path.abspath(v) for v in voyages] if voyages else decouvrir(racine)
|
||||
@@ -100,7 +105,9 @@ def generer(racine, voyages=None, compression=True, force=False, mymaps_maj=Fals
|
||||
dire("❌ Aucun voyage trouvé (dossiers avec routes/, photos/, rushs/ ou voyage.toml).")
|
||||
return False
|
||||
dire(f"📁 {len(liste)} voyage(s) : {', '.join(os.path.relpath(v, racine) for v in liste)}\n")
|
||||
echecs = [v for v in liste if not generer_voyage(v, racine, cfg, compression, force, suivi)]
|
||||
echecs = [v for v in liste
|
||||
if not generer_voyage(v, racine, cfg, compression, force, suivi, paliers, refaire,
|
||||
force_videos)]
|
||||
verifier_arret()
|
||||
if suivi:
|
||||
suivi({"etape": "Accueil", "voyage": ""})
|
||||
|
||||
Reference in new issue
Block a user