[multiplex] Fix sous-titres par défaut + argparse

This commit is contained in:
lionel
2025-07-23 23:44:22 +02:00
parent fe74632ae3
commit 7fd2a00938

View File

@ -2,6 +2,7 @@ import os
import sys import sys
import glob import glob
import re import re
import argparse
from pathlib import Path from pathlib import Path
from pymkv import MKVFile, MKVTrack from pymkv import MKVFile, MKVTrack
@ -145,7 +146,7 @@ def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, des
subtitle_tracks_other = [t for t in source_2_mkv.tracks if t.track_type == 'subtitles' and t.language != 'fre'] subtitle_tracks_other = [t for t in source_2_mkv.tracks if t.track_type == 'subtitles' and t.language != 'fre']
for idx, track in enumerate(subtitle_tracks_fr): for idx, track in enumerate(subtitle_tracks_fr):
track.default_track = (idx == 0) track.default_track = (idx == 0) and track.default_track
if not track.track_name: if not track.track_name:
codec = track._track_codec codec = track._track_codec
if track.forced_track: if track.forced_track:
@ -201,21 +202,46 @@ def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, des
def main(): def main():
""" """
Point d'entrée principal du script. @brief Point d'entrée du script.
@details Parse les arguments en ligne de commande et lance le traitement
Lit les arguments de ligne de commande, prépare les répertoires, des épisodes de la série.
et lance le traitement de chaque épisode (de 01 à 30). @arg -v, --video Répertoire source vidéo
@arg -a, --audio Répertoire source audio/sous-titres
@arg -va Répertoire source commun pour vidéo et audio
@arg -n, --nom Nom de la série
@arg -s, --saison Numéro de la saison
@arg -d, --dest Répertoire de sortie
@return None
""" """
if len(sys.argv) != 5: parser = argparse.ArgumentParser(
print(f'Usage: {sys.argv[0]} <SOURCE_DIR_1> <SOURCE_DIR_2> <SERIE_NAME> <SAISON>') description="Combine des épisodes MKV depuis deux sources (vidéo + audio/sous-titres)."
sys.exit(1) )
source_dir_1 = sys.argv[1] parser.add_argument("-v", "--video", help="Répertoire source vidéo" )
source_dir_2 = sys.argv[2] parser.add_argument("-a", "--audio", help="Répertoire source audio/sous-titres" )
serie_name = sys.argv[3] parser.add_argument("-va", help="Répertoire source commun pour vidéo et audio" )
saison = sys.argv[4] parser.add_argument("-n", "--nom", required=True, help="Nom de la série")
dest_dir = f"/media/data/reencoded/{serie_name}/Saison {saison}" parser.add_argument("-s", "--saison", required=True, help="Numéro de la saison")
parser.add_argument("-d", "--dest", required=True, help="Répertoire de sortie")
args = parser.parse_args()
# Gestion de l'option commune -va
if args.va:
source_dir_1 = source_dir_2 = args.va
else:
source_dir_1 = args.video
source_dir_2 = args.audio
# Vérification que les deux dossiers sont renseignés
if not source_dir_1 or not source_dir_2:
parser.error("Vous devez fournir soit -va, soit à la fois -v et -a.")
serie_name = args.nom
saison = args.saison
# Chemin de sortie
dest_dir = args.dest
Path(dest_dir).mkdir(parents=True, exist_ok=True) Path(dest_dir).mkdir(parents=True, exist_ok=True)
for i in range(1, 31): for i in range(1, 31):