From 4d7170f57003c6aaca9b690e0fce8d6aece62896 Mon Sep 17 00:00:00 2001 From: lionel <.> Date: Thu, 24 Jul 2025 01:07:42 +0200 Subject: [PATCH] [multiplex] Change la gestion des chapitres --- multiplex/multiplex.py | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/multiplex/multiplex.py b/multiplex/multiplex.py index c7df299..83004fc 100644 --- a/multiplex/multiplex.py +++ b/multiplex/multiplex.py @@ -73,15 +73,7 @@ def find_first_video_track_index(mkv_file): return idx return None -def has_named_chapters(chapters): - """ - Détermine si une liste de chapitres contient des noms réels (autres que des génériques). - """ - import re - pattern = re.compile(r'(?i)^\s*(chapter|chapitre)\s*\d+\s*$') - return any(not pattern.match(c.name or '') for c in chapters) - -def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, dest_dir): +def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, dest_dir, chapitre): """ Traite un épisode en combinant les pistes vidéo et audio/sous-titres de deux sources. @@ -91,6 +83,7 @@ def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, des :param saison: Numéro de saison :param serie_name: Nom de la série :param dest_dir: Répertoire de sortie + :param chapitre: Indique quels chapitres inclure dans le fichier final :return: None """ # Affiche une ligne bleue pour la lisibilité dans le terminal @@ -168,27 +161,14 @@ def process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, des final_mkv.add_track(track) # Traitement des chapitres - try: - chapters_1 = (source_1_mkv._info_json.get('chapters'))[0].get('num_entries') - except (AttributeError, IndexError): - chapters_1 = 0 - try: - chapters_2 = (source_2_mkv._info_json.get('chapters'))[0].get('num_entries') - except (AttributeError, IndexError): - chapters_2 = 0 - - valid_1 = chapters_1 >= 4 - valid_2 = chapters_2 >= 4 - - if valid_1 and len(chapters_1) >= len(chapters_2): + if chapitre in ('v', 'video'): source_2_mkv.no_chapters() - elif valid_2: + elif chapitre in ('a', 'audio'): source_1_mkv.no_chapters() else: source_1_mkv.no_chapters() source_2_mkv.no_chapters() - # Éffacer tous les tags source_1_mkv.no_global_tags() source_2_mkv.no_global_tags() @@ -227,6 +207,7 @@ def main(): 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") + parser.add_argument("-c", "--chapitre", choices=['n', 'non', 'v', 'video', 'a', 'audio'], default='a', help="Gestion des chapitres : 'n'/'non' pour aucun, 'v'/'video' pour source vidéo, 'a'/'audio' pour source audio (par défaut 'a')") args = parser.parse_args() @@ -243,6 +224,7 @@ def main(): serie_name = args.nom saison = args.saison + chapitre = args.chapitre # Chemin de sortie dest_dir = f"{args.dest}/{serie_name}/Saison {saison}" @@ -254,7 +236,7 @@ def main(): for i in range(1, max(count1, count2) + 1): episode = f"{i:02}" - process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, dest_dir) + process_episode(episode, source_dir_1, source_dir_2, saison, serie_name, dest_dir, chapitre) if __name__ == '__main__': main()