interface almost done

master
Aurelien PINTRAND 1 year ago
parent 50ccafde6a
commit a38a523f90

@ -23,27 +23,22 @@ def levenshtein_distance(s1, s2):
return previous_row[-1] 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_name = None
closest_id = None
min_distance = float('inf') min_distance = float('inf')
for i in range(len(actor_names)): for i in range(len(actor_names)):
actor_name = actor_names[i] actor_name = actor_names[i]
actor_id = actor_ids[i]
distance = levenshtein_distance(input_name, actor_name) distance = levenshtein_distance(input_name, actor_name)
if distance < min_distance: if distance < min_distance:
min_distance = distance min_distance = distance
closest_name = actor_name closest_name = actor_name
closest_id = actor_id return (closest_name)
return (closest_name,closest_id)
def getUniqueActorNames(filePath): def getUniqueActorNames(filePath):
# Lire le fichier TSV # Lire le fichier TSV
df = pd.read_csv(filePath, sep='\t') df = pd.read_csv(filePath, sep='\t')
actor_names = df['primaryName'].tolist() actor_names = df['primaryName'].tolist()
actor_ids = df['nconst'].tolist() # Supposer que la colonne s'appelle 'ActorName' return (actor_names)
# Supposer que la colonne s'appelle 'ActorName'
return (actor_names,actor_ids)
def saveUniqueActorsSorted(inputFilePath, outputFilePath): def saveUniqueActorsSorted(inputFilePath, outputFilePath):
# Lire le fichier TSV # Lire le fichier TSV
@ -64,42 +59,56 @@ def saveUniqueActorsSorted(inputFilePath, outputFilePath):
writer.writerow([row['primaryName'], row['nconst']]) 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__": if __name__ == "__main__":
mustContinue = True mustContinue = True
if not os.path.exists("processedData/uniqueActorNames.tsv"): if not os.path.exists("processedData/uniqueActorNames.tsv"):
saveUniqueActorsSorted("processedData/actorsRatingsGroupedWithName.tsv", "processedData/uniqueActorNames.tsv") saveUniqueActorsSorted("processedData/actorsRatingsGroupedWithName.tsv", "processedData/uniqueActorNames.tsv")
tupleActors = getUniqueActorNames("processedData/uniqueActorNames.tsv") actor_names = getUniqueActorNames("processedData/uniqueActorNames.tsv")
selectedActorNames = [] selectedActorNames = []
print("Bienvenue dans MoviePrecog!") print("Bienvenue dans MoviePrecog!")
while(mustContinue): while mustContinue:
print("1: Ajouter un acteur à la liste (4 acteurs / actrices requis)") print("1: Ajouter un acteur à la liste (4 acteurs / actrices requis)")
print("2: Afficher la liste") print("2: Afficher la liste")
print("3: Vider la liste") print("3: Vider la liste")
print("4: Lancer la prévision") print("4: Lancer la prévision")
print("5: Quitter") print("5: Quitter")
userChoice = input("Votre choix: ")
if(userChoice == "1"): choice = input("Faites votre choix : ")
actorName = input("Quel acteur voulez-vous chercher ? ")
actorFound = find_closest_actor_name(actorName, tupleActors[0], tupleActors[1]) if choice == '1':
print("L'acteur/actrice trouvé est: " + actorFound) result = add_actor(actor_names)
sublevelMustContinue = True if result:
leave = False selectedActorNames.append(result[0])
correctActorChoice = input("Est-ce le bon acteur/actrice ? (o = oui, n = non)") print(f"{result[0]} a été ajouté à la liste.")
if(correctActorChoice == "n"): elif choice == '2':
while(sublevelMustContinue): print("Liste des acteurs sélectionnés :")
leave = input("Sortir ou relancer ? (sortir = s, relancer = r)") for actor in selectedActorNames:
if(leave == "r"): print(actor)
actorName = input("Quel acteur voulez-vous chercher ? ") elif choice == '3':
actorFound = find_closest_actor_name(actorName, tupleActors[0], tupleActors[1]) selectedActorNames.clear()
print("L'acteur/actrice trouvé est: " + actorFound) print("La liste a été vidée.")
sublevelMustContinue = True elif choice == '4':
correctActorChoice = input("Est-ce le bon acteur/actrice ? (o = oui, n = non)") # TODO: Implémenter la comparaison
if(correctActorChoice == o): print("Lancement de la prévision... (TODO)")
sublevelMustContinue = False elif choice == '5':
else if(leave != "r" or (leave != "s" and leave )) print("Au revoir !")
mustContinue = False
else:
print("Choix non valide, veuillez réessayer.")
print(find_closest_actor_name("Robert downey jr",tupleActors[0],tupleActors[1]))

Loading…
Cancel
Save