import pandas as pd def load_movie_data(path="imdb_top_1000/imdb_top_1000.csv"): df = pd.read_csv(path) df.rename(columns={"Series_Title": "title", "Released_Year": "year", "Genre": "genre", "IMDB_Rating": "rating", "Poster_Link": "poster"}, inplace=True) # OPTIONAL: Add a fake 'mood' column based on genre (can be improved later) df["mood"] = df["genre"].apply(lambda g: infer_mood_from_genre(g)) return df def infer_mood_from_genre(genre_str): genre_str = genre_str.lower() if isinstance(genre_str, str) else "" if any(g in genre_str for g in ["romance", "comedy"]): return "Feel-good" elif any(g in genre_str for g in ["action", "thriller"]): return "Intense" elif "drama" in genre_str: return "Thought-provoking" elif "animation" in genre_str: return "Funny" else: return "General" def recommend_movies(df, mood=None, genre=None, min_rating=0.0): filtered = df.copy() if mood: filtered = filtered[filtered["mood"].str.contains(mood, case=False, na=False)] if genre and genre.lower() != "any": filtered = filtered[filtered["genre"].str.contains(genre, case=False, na=False)] filtered = filtered[filtered["rating"] >= min_rating] filtered = filtered.sort_values(by="rating", ascending=False) return filtered.head(10)