Skip to content

Profils cli json

Hydro74000 edited this page Oct 30, 2026 · 6 revisions

Profils - CLI et JSON

Les profils décisionnels peuvent être validés, prévisualisés et appliqués sans ouvrir l'interface graphique.

Lancement CLI

Depuis les sources :

python3 main.py --cli --help
python3 main.py --cli inspect source.mkv

Dans un build packagé :

muxiveo --cli --help
muxiveo --cli inspect source.mkv

main.py --cli route directement vers le mode headless avant toute initialisation Qt.

Commandes utiles

muxiveo --cli validate --profile profil.json
muxiveo --cli preview --profile profil.json -i source.mkv --json
muxiveo --cli run --profile profil.json -i source.mkv -o sortie.mkv

En batch dossier :

muxiveo --cli batch \
  --profile profil.json \
  --input-dir "Serie" \
  --recursive \
  --output-dir "out" \
  --auto-tmdb \
  --dry-run

--profile accepte un chemin complet ou le nom d'un profil enregistré dans :

<dossier de config Muxiveo>/profiles/decision/

L'extension .json est optionnelle.

Exemple de profil décisionnel

{
  "version": 1,
  "kind": "decision-profile",
  "name": "VF + VO",
  "output_template": "{title:release}.{season_episode}.{year}.{video-resolution:first}.{audio-multi}.{audio-codec-release:best}-{group}",
  "variables": {
    "aliases": {
      "*": {
        "EAC3": "DDP",
        "AC3": "Dolby Digital"
      },
      "lang_name": {
        "French": "Français"
      }
    }
  },
  "groups": [
    {"id": "audio", "label": "Audio", "enabled": true, "priority": 200}
  ],
  "rules": [
    {
      "id": "rename_fr",
      "label": "Renommer VF",
      "group_id": "audio",
      "priority": 100,
      "write_mode": "priority",
      "scope": "all",
      "match": {
        "all": [
          {"field": "type", "op": "is", "value": "audio"},
          {"field": "language", "op": "is", "value": "fr-FR"},
          {"field": "source_title", "op": "contains", "expr": "VFQ | VFF", "required": false}
        ]
      },
      "actions": [
        {"type": "set_enabled", "value": true},
        {"type": "set_title", "pattern": "{lang_name} {codec} {channels} {audio_object}"}
      ]
    }
  ]
}

Dans rules[], group_id rattache la règle à un groupe pour l'affichage, l'activation et la priorité. Il ne remplace pas les critères de matching : une règle group_id: "subtitle" peut encore matcher une piste audio si match ne contient pas de critère type. Ajoutez donc explicitement {"field": "type", "op": "is", "value": "audio"} ou subtitle/video quand la règle doit viser un type précis.

Conditions expr

Une condition peut utiliser value ou expr.

{"field": "source_title", "op": "contains", "expr": "(VFQ | VFF) & Forced"}

expr accepte :

  • & pour AND ;
  • | pour OR ;
  • les parenthèses ;
  • les guillemets pour les littéraux ;
  • l'échappement \ hors guillemets.

Pour chercher un opérateur comme texte :

{"field": "source_title", "op": "contains", "expr": "\"A | B\" | Dolby \\& DTS"}

Une condition qui contient à la fois value et expr est invalide.

Aliases dans le CLI

Le CLI lit variables.aliases comme l'éditeur :

{
  "variables": {
    "aliases": {
      "*": {"EAC3": "DDP"},
      "lang_name": {"French": "Français"}
    }
  }
}

Les aliases s'appliquent :

  • aux patterns de titres de pistes ;
  • aux keywords de pistes rendus dans --output-template.

Ils ne s'appliquent pas aux critères de matching.

variables.codec_names reste lu pour les anciens profils.

Templates de sortie

Les keywords de pistes sont disponibles avec des préfixes :

{audio-lang:all}
{sub-lang:all}
{audio-codec-release:best}
{video-resolution:best}
{video-hdr:best}
{video-dolby-vision}
{audio-immersive}

Exemple :

muxiveo --cli batch --profile profil.json --input-dir "Serie" --recursive \
  --output-template "{title}.S{season}E{episode}.{audio-codec-release:best}" \
  --output-all

Sans --output-all, les keywords de pistes utilisent les pistes finales activées. Avec --output-all, ils listent toutes les valeurs trouvées. Les tokens TMDB comme {title}, {year}, {season}, {episode} et {episode_title} peuvent être mélangés avec les tokens de pistes. Les segments vides sont compactés et .mkv est ajouté si le template ne fournit pas d'extension vidéo connue.

Ordre de priorité des noms de sortie en CLI

  1. Option explicite de fichier : -o chemin/nom_voulu.mkv (priorité absolue).
  2. Option de gabarit en ligne de commande : --output-template "{title}...".
  3. Modèle du profil décisionnel : champ output_template du profil utilisé.
  4. Dossier de destination : -o chemin/dossier/ sert de dossier parent recevant le nom calculé par le template ; batch --profile place les résultats dans --output-dir.

Exact jobs

Exporter JSON CLI produit un exact-job, destiné aux traitements stricts.

muxiveo --cli validate --config exact-job.json
muxiveo --cli preview --config exact-job.json
muxiveo --cli run --config exact-job.json
muxiveo --cli batch --template exact-job.json --input-dir "Serie" --output-dir "out"

Utilisez un exact job quand la structure des sources est stable. Utilisez un profil décisionnel quand les sources varient mais que vos décisions restent les mêmes.

Déplacer un profil ou un projet JSON

Les documents sont lus en UTF-8, avec ou sans BOM. Les chemins relatifs d’un job sont résolus depuis son dossier, pas depuis le terminal. Les valeurs NaN et Infinity sont refusées. Les profils enregistrés sont retrouvés par leur nom exact ; une erreur de lecture est signalée. Validez le document avant de lancer un lot. Voir CLI headless.

Navigation

Clone this wiki locally