diff --git a/multiplex/multiplex.py b/multiplex/multiplex.py index 461651a..605e979 100644 --- a/multiplex/multiplex.py +++ b/multiplex/multiplex.py @@ -2,6 +2,7 @@ import os import sys import glob import re +import argparse from pathlib import Path 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'] 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: codec = track._track_codec if track.forced_track: @@ -201,21 +202,46 @@ def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, des def main(): """ - Point d'entrée principal du script. - - Lit les arguments de ligne de commande, prépare les répertoires, - et lance le traitement de chaque épisode (de 01 à 30). + @brief Point d'entrée du script. + @details Parse les arguments en ligne de commande et lance le traitement + des épisodes de la série. + @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: - print(f'Usage: {sys.argv[0]} ') - sys.exit(1) + parser = argparse.ArgumentParser( + description="Combine des épisodes MKV depuis deux sources (vidéo + audio/sous-titres)." + ) - source_dir_1 = sys.argv[1] - source_dir_2 = sys.argv[2] - serie_name = sys.argv[3] - saison = sys.argv[4] - dest_dir = f"/media/data/reencoded/{serie_name}/Saison {saison}" + parser.add_argument("-v", "--video", help="Répertoire source vidéo" ) + parser.add_argument("-a", "--audio", help="Répertoire source audio/sous-titres" ) + parser.add_argument("-va", help="Répertoire source commun pour vidéo et audio" ) + parser.add_argument("-n", "--nom", required=True, help="Nom de la série") + 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 = f"{args.dest}/{serie_name}/Saison {saison}" Path(dest_dir).mkdir(parents=True, exist_ok=True) for i in range(1, 31):