Netflix-data / app.py
mfraz's picture
Update app.py
6baa18f verified
import streamlit as st
import pandas as pd
import torch # Ensure PyTorch is imported
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load the Netflix dataset from CSV
@st.cache_data
def load_data():
df = pd.read_csv("https://huggingface.co/spaces/mfraz/Netflix-data/resolve/main/netflix_titles.csv")
df.fillna("N/A", inplace=True) # Replace NaN values with "N/A"
return df
# Load DialoGPT model and tokenizer
@st.cache_resource
def load_model():
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
return tokenizer, model
# Function to search the dataset for movie details
def search_movie_details(query, data):
query = query.lower()
# Filtering: Ensure column names exist and search query is in title, cast, or director
results = data[
data["title"].str.lower().str.contains(query, na=False) |
data["cast"].str.lower().str.contains(query, na=False) |
data["director"].str.lower().str.contains(query, na=False)
]
return results
# Streamlit App
st.title("Netflix Movies 🎬")
# Load dataset and model
data = load_data()
tokenizer, model = load_model()
# User Input (Only Text)
user_input = st.text_input("Enter the movie name, director, or cast:")
# Generate response
if user_input:
movie_results = search_movie_details(user_input, data)
if not movie_results.empty:
st.write("Here are the matching results:")
for _, row in movie_results.iterrows():
st.write(f"**Title:** {row['title']}")
st.write(f"**Type:** {row['type']}")
st.write(f"**Director:** {row['director']}")
st.write(f"**Cast:** {row['cast']}")
st.write(f"**Release Year:** {row['release_year']}")
st.write(f"**Country:** {row['country']}") # βœ… Now displays Country correctly
st.write(f"**Rating:** {row['rating']}")
st.write(f"**Description:** {row['description']}")
st.write("---")
else:
st.write("**I have no data about this movie. Please search another movie.**")