import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import cosine_similarity import os ARQUIVO = "filmes.csv" # Função para carregar ou criar base de dados def carregar_dados(): if not os.path.exists(ARQUIVO): df_inicial = pd.DataFrame({ 'titulo': [ 'O Senhor dos Anéis', 'Matrix', 'Titanic', 'Velozes e Furiosos', 'Avatar', 'Diário de uma Paixão', 'Homem de Ferro' ], 'generos': [ 'Aventura Fantasia', 'Ação Ficção Científica', 'Romance Drama', 'Ação Crime', 'Ficção Científica Aventura', 'Romance Drama', 'Ação Ficção Científica' ] }) df_inicial.to_csv(ARQUIVO, index=False) return pd.read_csv(ARQUIVO) # Função para salvar base de dados def salvar_dados(df): df.to_csv(ARQUIVO, index=False) # Função de recomendação def recomendar_filmes(df, titulo, n=3): if titulo not in df['titulo'].values: return None vectorizer = CountVectorizer() generos_matrix = vectorizer.fit_transform(df['generos']) similaridade = cosine_similarity(generos_matrix) idx = df[df['titulo'] == titulo].index[0] scores = list(enumerate(similaridade[idx])) scores = sorted(scores, key=lambda x: x[1], reverse=True) recomendacoes_idx = [i[0] for i in scores[1:n+1]] return df['titulo'].iloc[recomendacoes_idx].tolist() # Função para adicionar um novo filme def adicionar_filme(df): titulo = input("Digite o título do novo filme: ").strip() if titulo in df['titulo'].values: print("Filme já existe no sistema.") return df generos = input("Digite os gêneros do filme (separados por espaço): ").strip() novo_filme = pd.DataFrame({'titulo': [titulo], 'generos': [generos]}) df = pd.concat([df, novo_filme], ignore_index=True) salvar_dados(df) print(f"Filme '{titulo}' adicionado com sucesso!") return df # Função para exibir filmes disponíveis def listar_filmes(df): print("\n🎬 Filmes disponíveis:") for i, row in df.iterrows(): print(f"- {row['titulo']} ({row['generos']})") print() # Menu principal def menu(): df = carregar_dados() while True: print("\n=== SISTEMA DE RECOMENDAÇÃO DE FILMES ===") print("1. Recomendar filmes") print("2. Adicionar novo filme") print("3. Listar todos os filmes") print("4. Sair") escolha = input("Escolha uma opção (1-4): ").strip() if escolha == '1': titulo = input("\nDigite o nome de um filme: ").strip() recomendacoes = recomendar_filmes(df, titulo) if recomendacoes: print(f"\nFilmes recomendados para '{titulo}':") for i, rec in enumerate(recomendacoes, 1): print(f"{i}. {rec}") else: print(f"\nFilme '{titulo}' não encontrado no sistema.") elif escolha == '2': df = adicionar_filme(df) elif escolha == '3': listar_filmes(df) elif escolha == '4': print("\nObrigado por usar o sistema. Até logo!") break else: print("Opção inválida. Tente novamente.") # Executa o programa if __name__ == "__main__": menu()