[multiplex] Change la gestion des chapitres
All checks were successful
/ 🐍 Build & Publish Python Packages (push) Successful in 10s
All checks were successful
/ 🐍 Build & Publish Python Packages (push) Successful in 10s
This commit is contained in:
@ -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()
|
||||
|
Reference in New Issue
Block a user