Bonjour,
J'ai utilisé ChatGPT pour m'aider à créer un script python destiné à détecter les épisodes manquants dans mes séries télévisées. Le script me permet de repérer les extensions de fichiers différentes ainsi que les saisons manquantes. J'ai réalisé un test avec une série fictive que j'ai nommée "test". Dans ce dossier, j'ai enlevé l'épisode 2 de la saison 1, les épisodes 1 et 2 de la saison 2, la saison 3 entière, et les épisodes 1 et 4 de la saison 4. Voici la liste de mes fichiers :
Cependant, j'ai pu constater que dans une version antérieure du code, le calcul des épisodes manquants était correct. Entretemps, j'ai apporté plusieurs modifications pour améliorer la présentation du message. Je recherche de l'aide pour adapter mon code actuel afin qu'il puisse effectuer le calcul correct des épisodes manquants tout en conservant le format d'affichage amélioré.
Pouvez-vous m'aider à résoudre ce problème ?
Merci d'avance pour votre assistance.
Je vais vous donner le code actuel suivi du code avec le bon calcul.
Voici le code actuel :
Le code avec le bon calcul :
J'ai utilisé ChatGPT pour m'aider à créer un script python destiné à détecter les épisodes manquants dans mes séries télévisées. Le script me permet de repérer les extensions de fichiers différentes ainsi que les saisons manquantes. J'ai réalisé un test avec une série fictive que j'ai nommée "test". Dans ce dossier, j'ai enlevé l'épisode 2 de la saison 1, les épisodes 1 et 2 de la saison 2, la saison 3 entière, et les épisodes 1 et 4 de la saison 4. Voici la liste de mes fichiers :
- test.S01E01.mkv
- test.S01E03.mkv
- test.S01E04.mkv
- test.S01E05.mkv
- test.S02E03.mkv
- test.S02E05.mkv
- test.S04E02.mkv
- test.S04E03.mkv
- test.S04E05.mkv
Cependant, j'ai pu constater que dans une version antérieure du code, le calcul des épisodes manquants était correct. Entretemps, j'ai apporté plusieurs modifications pour améliorer la présentation du message. Je recherche de l'aide pour adapter mon code actuel afin qu'il puisse effectuer le calcul correct des épisodes manquants tout en conservant le format d'affichage amélioré.
Pouvez-vous m'aider à résoudre ce problème ?
Merci d'avance pour votre assistance.
Je vais vous donner le code actuel suivi du code avec le bon calcul.
Voici le code actuel :
Bloc de code:
import os
import re
def verifier_episodes_dossier(dossier, nom_serie=""):
fichiers = os.listdir(dossier)
episodes_par_saison = {}
fichiers_extension_diff = {}
for fichier in fichiers:
if fichier == ".DS_Store":
continue # Ignorer le fichier .DS_Store
chemin_fichier = os.path.join(dossier, fichier)
if os.path.isdir(chemin_fichier):
if "Exclure" in fichier:
print(f"\nIgnoré le dossier '{fichier}' contenant 'Exclure'")
continue # Ignorer le dossier avec "Exclure" dans le nom
nouveau_nom_serie = os.path.basename(chemin_fichier)
episodes_par_saison.update(verifier_episodes_dossier(chemin_fichier, nouveau_nom_serie))
else:
extension = os.path.splitext(fichier)[1]
if extension.lower() != ".mkv":
if nom_serie not in fichiers_extension_diff:
fichiers_extension_diff[nom_serie] = []
fichiers_extension_diff[nom_serie].append(fichier)
if fichier.endswith(".mkv"):
# Extraire le nom de l'épisode en enlevant l'extension .mkv
nom_episode = os.path.splitext(fichier)[0]
# Recherchez le format SxxExx ou sxxexx dans le nom de l'épisode
saison_episode_match = re.search(r"S(\d{2})E(\d{2})|s(\d{2})e(\d{2})", nom_episode)
if saison_episode_match:
saison = int(saison_episode_match.group(1) or saison_episode_match.group(3))
episode = int(saison_episode_match.group(2) or saison_episode_match.group(4))
if nom_serie not in episodes_par_saison:
episodes_par_saison[nom_serie] = {}
if saison not in episodes_par_saison[nom_serie]:
episodes_par_saison[nom_serie][saison] = []
episodes_par_saison[nom_serie][saison].append(episode)
else:
print(f"\nAttention : Nom de fichier non reconnu dans la série '{nom_serie}': {fichier}")
if fichiers_extension_diff:
print(f"\nAttention : Fichier{'s' if len(fichiers_extension_diff) > 1 else ''} avec extension différente :")
for nom_serie, fichiers in fichiers_extension_diff.items():
print(f"{nom_serie}:")
for fichier in fichiers:
print(f"{fichier}")
return episodes_par_saison
# Chemin vers le dossier principal contenant les séries
dossier_principal = "/Users/gregoryen/Dropbox (Rémi Forest)/Images & Vidéos/Film & Séries/Séries"
# Parcourir les épisodes dans les sous-dossiers
episodes_par_serie = verifier_episodes_dossier(dossier_principal)
# Vérifier les épisodes manquants
tous_les_trous = False
for serie, saisons in episodes_par_serie.items():
missing_seasons = []
missing_episodes = {}
for saison in range(1, max(saisons.keys()) + 1):
if saison not in saisons:
missing_seasons.append(saison)
else:
episodes = saisons[saison]
episodes.sort()
for i in range(1, len(episodes)):
if episodes[i] - episodes[i-1] > 1:
if saison not in missing_episodes:
missing_episodes[saison] = []
for missing_episode in range(episodes[i-1] + 1, episodes[i]):
missing_episodes[saison].append(missing_episode)
if "Exclure" in serie:
print(f"\nIgnoré le dossier '{serie}' contenant 'Exclure'")
if missing_seasons or missing_episodes:
print(f"\nManquant{'s' if (len(missing_seasons) + len(missing_episodes)) != 1 else ''} dans la série '{serie}'")
if missing_seasons:
print(f"Saison{'s' if len(missing_seasons) != 1 else ''} manquante{'s' if len(missing_seasons) != 1 else ''} : {missing_seasons}")
if missing_episodes:
print(f"Épisode{'s' if sum(len(episodes) for episodes in missing_episodes.values()) > 1 else ''} manquant{'s' if sum(len(episodes) for episodes in missing_episodes.values()) > 1 else ''} :")
for saison, episodes in missing_episodes.items():
print(f"Saison {saison} : {episodes}")
tous_les_trous = True
if not tous_les_trous:
print("\nAucun trou d'épisode trouvé dans toutes les séries.")
Le code avec le bon calcul :
Bloc de code:
import os
import re
def verifier_episodes_dossier(dossier, nom_serie=""):
fichiers = os.listdir(dossier)
episodes_par_saison = {}
for fichier in fichiers:
if fichier == ".DS_Store":
continue # Ignorer le fichier .DS_Store
chemin_fichier = os.path.join(dossier, fichier)
if os.path.isdir(chemin_fichier):
if "Exclure" in fichier:
print(f"Ignoré le dossier '{fichier}' contenant 'Exclure'")
continue # Ignorer le dossier avec "Exclure" dans le nom
nouveau_nom_serie = os.path.basename(chemin_fichier)
episodes_par_saison.update(verifier_episodes_dossier(chemin_fichier, nouveau_nom_serie))
else:
extension = os.path.splitext(fichier)[1]
if extension.lower() != ".mkv":
print(f"Attention : Fichier avec extension différente dans la série '{nom_serie}': {fichier}")
if fichier.endswith(".mkv"):
# Extraire le nom de l'épisode en enlevant l'extension .mkv
nom_episode = os.path.splitext(fichier)[0]
# Recherchez le format SxxExx ou sxxexx dans le nom de l'épisode
saison_episode_match = re.search(r"S(\d{2})E(\d{2})|s(\d{2})e(\d{2})", nom_episode)
if saison_episode_match:
saison = int(saison_episode_match.group(1) or saison_episode_match.group(3))
episode = int(saison_episode_match.group(2) or saison_episode_match.group(4))
if nom_serie not in episodes_par_saison:
episodes_par_saison[nom_serie] = {}
if saison not in episodes_par_saison[nom_serie]:
episodes_par_saison[nom_serie][saison] = []
episodes_par_saison[nom_serie][saison].append(episode)
else:
print(f"Attention : Nom de fichier non reconnu dans la série '{nom_serie}': {fichier}")
return episodes_par_saison
# Chemin vers le dossier principal contenant les séries
dossier_principal = "/Users/gregoryen/Dropbox (Rémi Forest)/Images & Vidéos/Film & Séries/Séries"
# Parcourir les épisodes dans les sous-dossiers
episodes_par_serie = verifier_episodes_dossier(dossier_principal)
# Vérifier les épisodes manquants et les extensions différentes
for serie, saisons in episodes_par_serie.items():
for saison, episodes in saisons.items():
episodes.sort()
missing_episodes = []
for missing_episode in range(1, min(episodes) + 1):
if missing_episode not in episodes:
missing_episodes.append(missing_episode)
for i in range(1, len(episodes)):
if episodes[i] - episodes[i-1] > 1:
for missing_episode in range(episodes[i-1] + 1, episodes[i]):
missing_episodes.append(missing_episode)
if missing_episodes:
print(f"Il y a des épisodes manquants dans la série '{serie}', saison {saison} : {missing_episodes}")