Interface locale : rtg interface (voyages, sources, journées, récit, génération)
Serveur web local sans dépendance nouvelle (http.server, Jinja2, htmx et Leaflet fournis). Écrans : Mes voyages, nouveau voyage, un voyage (journées avec carte, rattachement des traces sans heures à un jour avec suggestion d'après les photos, sources avec choix de dossier, infos et récit, génération avec avancement et arrêt), réglages du site et vérification des outils. Chaîne : jours imposés ([dates_traces] dans voyage.toml), arrêt propre de la compression, suivi des étapes, état structuré (site.tableau_etat), titre du voyage repris de voyage.toml sur l'accueil. 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
608334b9d8
commit
06153a227e
37 files changed
+2618
-57
No files matched your search
@@ -0,0 +1,68 @@
|
||||
{% extends "base.html" %}
|
||||
{% block titre %}Réglages{% endblock %}
|
||||
{% block contenu %}
|
||||
<h1>Réglages du site</h1>
|
||||
<p class="aide">Enregistrés dans <code>site.toml</code>. Ils valent pour tous les voyages.</p>
|
||||
<form class="formulaire" hx-post="/reglages" hx-target="#retour-reglages">
|
||||
<fieldset>
|
||||
<legend>Site</legend>
|
||||
<label>Titre <input name="titre" value="{{ cfg.titre }}"></label>
|
||||
<label>Adresse publique <input name="adresse_publique" value="{{ cfg.adresse_publique }}" placeholder="https://…/">
|
||||
<span class="aide">Adresse où le site est consulté (liens de partage).</span></label>
|
||||
<label>Voyages récents par rubrique sur l'accueil <input type="number" min="1" max="12" name="accueil_nb_recents" value="{{ cfg.accueil_nb_recents }}"></label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="video">
|
||||
<legend>Vidéos</legend>
|
||||
<p class="aide">Chaque rush donne une version 1080p HEVC (H.265) et une version 720p H.264, lue par défaut et partout.</p>
|
||||
{% set descriptions = {"econome": "fichiers plus légers, légère perte visible sur les scènes chargées",
|
||||
"equilibree": "réglage d'origine, très bon compromis",
|
||||
"haute": "presque indiscernable de l'original, fichiers nettement plus gros"} %}
|
||||
{% for q, p in qualites.items() %}
|
||||
<label class="choix"><input type="radio" name="qualite" value="{{ q }}" {{ 'checked' if cfg.video.qualite == q }}>
|
||||
<strong>{{ {"econome": "Économe", "equilibree": "Équilibrée", "haute": "Haute"}[q] }}</strong>
|
||||
<span class="aide">{{ descriptions[q] }} (CRF {{ p.crf_hevc }} / {{ p.crf_h264 }})</span></label>
|
||||
{% endfor %}
|
||||
<label>Encodeur
|
||||
<select name="encodeur">
|
||||
<option value="processeur" {{ 'selected' if cfg.video.encodeur != 'materiel' }}>Processeur (x265 / x264) : meilleure qualité à taille égale</option>
|
||||
<option value="materiel" {{ 'selected' if cfg.video.encodeur == 'materiel' }}>Matériel (VideoToolbox, Mac) : bien plus rapide, fichiers plus gros</option>
|
||||
</select></label>
|
||||
<label>Vitesse de l'encodeur processeur
|
||||
<select name="preset">
|
||||
{% for p in ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower"] %}
|
||||
<option {{ 'selected' if cfg.video.preset == p }}>{{ p }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<span class="aide">« medium » par défaut ; plus lent = un peu plus léger à qualité égale.</span></label>
|
||||
<label>Vidéos encodées en parallèle <input type="number" min="0" max="16" name="jobs" value="{{ cfg.video.jobs }}">
|
||||
<span class="aide">0 = automatique selon le nombre de cœurs.</span></label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Photos</legend>
|
||||
<label>Plus grand côté des photos web (pixels) <input type="number" min="640" max="6000" step="10" name="grand_cote" value="{{ cfg.photos.grand_cote }}"></label>
|
||||
<label>Qualité JPEG <input type="number" min="40" max="100" name="qualite_photos" value="{{ cfg.photos.qualite }}"></label>
|
||||
<label class="choix"><input type="checkbox" name="positions_deduites" {{ 'checked' if cfg.photos.positions_deduites }}>
|
||||
Placer les photos sans GPS d'après l'heure et la trace (à 5 minutes près)</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Journées</legend>
|
||||
<label>Fuseau horaire <input name="fuseau" value="{{ cfg.journees.fuseau }}" placeholder="Europe/Paris"></label>
|
||||
<label>Heure de changement de jour <input type="number" min="0" max="12" name="coupure_heure" value="{{ cfg.journees.coupure_heure }}">
|
||||
<span class="aide">Une étape finie après minuit mais avant cette heure reste sur la veille.</span></label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Carte globale</legend>
|
||||
<label>Cartes Google My Maps à reprendre (une adresse par ligne)
|
||||
<textarea name="mymaps" rows="3">{{ cfg.carte_globale.mymaps|join("\n") }}</textarea>
|
||||
<span class="aide">Leurs tracés sont récupérés une fois et ajoutés à la carte de l'accueil, sur fond OpenStreetMap.</span></label>
|
||||
</fieldset>
|
||||
<p><button class="principal">Enregistrer</button> <span id="retour-reglages"></span></p>
|
||||
</form>
|
||||
|
||||
<h2>Système</h2>
|
||||
<div hx-get="/systeme" hx-trigger="load"><p class="chargement">Vérification des outils…</p></div>
|
||||
{% endblock %}
|
||||
Reference in new issue
Block a user