From a38a523f90ba6922fcb5f1cdf4200f27509eae93 Mon Sep 17 00:00:00 2001 From: aurelien Date: Mon, 12 Feb 2024 21:41:28 +0100 Subject: [PATCH] interface almost done --- interface.py | 79 +++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/interface.py b/interface.py index af0eeb4..758c35d 100644 --- a/interface.py +++ b/interface.py @@ -23,27 +23,22 @@ def levenshtein_distance(s1, s2): return previous_row[-1] -def find_closest_actor_name(input_name, actor_names, actor_ids): +def find_closest_actor_name(input_name, actor_names): closest_name = None - closest_id = None min_distance = float('inf') for i in range(len(actor_names)): actor_name = actor_names[i] - actor_id = actor_ids[i] distance = levenshtein_distance(input_name, actor_name) if distance < min_distance: min_distance = distance closest_name = actor_name - closest_id = actor_id - return (closest_name,closest_id) + return (closest_name) def getUniqueActorNames(filePath): # Lire le fichier TSV df = pd.read_csv(filePath, sep='\t') actor_names = df['primaryName'].tolist() - actor_ids = df['nconst'].tolist() # Supposer que la colonne s'appelle 'ActorName' - # Supposer que la colonne s'appelle 'ActorName' - return (actor_names,actor_ids) + return (actor_names) def saveUniqueActorsSorted(inputFilePath, outputFilePath): # Lire le fichier TSV @@ -64,42 +59,56 @@ def saveUniqueActorsSorted(inputFilePath, outputFilePath): writer.writerow([row['primaryName'], row['nconst']]) +def ask_user_verification(actor_name): + response = input(f"Est-ce que vous vouliez dire {actor_name}? (Oui/Non) ") + return response.lower() in ['oui', 'o', 'yes', 'y'] + +def add_actor(actor_names): + user_input = input("Entrez le nom de l'acteur à ajouter : ") + closest_name = find_closest_actor_name(user_input, actor_names) + if ask_user_verification(closest_name): + return closest_name + else: + user_choice = input("Voulez-vous réessayer avec un autre nom? (Oui/Non) ") + if user_choice.lower() in ['oui', 'o', 'yes', 'y']: + return add_actor(actor_names) + else: + return None + if __name__ == "__main__": mustContinue = True if not os.path.exists("processedData/uniqueActorNames.tsv"): saveUniqueActorsSorted("processedData/actorsRatingsGroupedWithName.tsv", "processedData/uniqueActorNames.tsv") - tupleActors = getUniqueActorNames("processedData/uniqueActorNames.tsv") + actor_names = getUniqueActorNames("processedData/uniqueActorNames.tsv") selectedActorNames = [] - print("Bienvenue dans MoviePrecog!") - while(mustContinue): + while mustContinue: print("1: Ajouter un acteur à la liste (4 acteurs / actrices requis)") print("2: Afficher la liste") print("3: Vider la liste") print("4: Lancer la prévision") print("5: Quitter") - userChoice = input("Votre choix: ") - if(userChoice == "1"): - actorName = input("Quel acteur voulez-vous chercher ? ") - actorFound = find_closest_actor_name(actorName, tupleActors[0], tupleActors[1]) - print("L'acteur/actrice trouvé est: " + actorFound) - sublevelMustContinue = True - leave = False - correctActorChoice = input("Est-ce le bon acteur/actrice ? (o = oui, n = non)") - if(correctActorChoice == "n"): - while(sublevelMustContinue): - leave = input("Sortir ou relancer ? (sortir = s, relancer = r)") - if(leave == "r"): - actorName = input("Quel acteur voulez-vous chercher ? ") - actorFound = find_closest_actor_name(actorName, tupleActors[0], tupleActors[1]) - print("L'acteur/actrice trouvé est: " + actorFound) - sublevelMustContinue = True - correctActorChoice = input("Est-ce le bon acteur/actrice ? (o = oui, n = non)") - if(correctActorChoice == o): - sublevelMustContinue = False - else if(leave != "r" or (leave != "s" and leave )) - - - -print(find_closest_actor_name("Robert downey jr",tupleActors[0],tupleActors[1])) + + choice = input("Faites votre choix : ") + + if choice == '1': + result = add_actor(actor_names) + if result: + selectedActorNames.append(result[0]) + print(f"{result[0]} a été ajouté à la liste.") + elif choice == '2': + print("Liste des acteurs sélectionnés :") + for actor in selectedActorNames: + print(actor) + elif choice == '3': + selectedActorNames.clear() + print("La liste a été vidée.") + elif choice == '4': + # TODO: Implémenter la comparaison + print("Lancement de la prévision... (TODO)") + elif choice == '5': + print("Au revoir !") + mustContinue = False + else: + print("Choix non valide, veuillez réessayer.")