Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -120,7 +120,7 @@ else:
|
|
120 |
|
121 |
# Only fetch and display movies if a genre is selected
|
122 |
if genre_name:
|
123 |
-
st.
|
124 |
genre_id = genres[genre_name] # Get the genre ID based on the selected genre name
|
125 |
top_movies = get_top_movies_by_genre(genre_id) # Fetch top 10 movies in this genre, sorted by title length
|
126 |
|
@@ -172,27 +172,26 @@ else:
|
|
172 |
if st.button("Show Recommendations"):
|
173 |
if st.session_state['selected_movies']:
|
174 |
# Step 1: Collect emotions of user-selected movies
|
175 |
-
st.
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
with st.spinner("Filtering movies by matching emotions..."):
|
196 |
for title, rating, poster_path, movie_id, description in all_similar_movies:
|
197 |
if movie_id not in seen_movie_ids: # Exclude already-seen movies
|
198 |
movie_emotion = analyze_emotion(description)
|
@@ -205,7 +204,7 @@ else:
|
|
205 |
|
206 |
# Step 4: Display final recommendations
|
207 |
if st.session_state['recommendations']:
|
208 |
-
st.write("Based on your selections, you might also enjoy these top
|
209 |
for title, rating, poster_path, movie_id, emotion in sorted(st.session_state['recommendations'], key=lambda x: x[1], reverse=True)[:5]:
|
210 |
movie_details = get_movie_details(movie_id)
|
211 |
if movie_details:
|
@@ -215,7 +214,6 @@ else:
|
|
215 |
with col2:
|
216 |
st.markdown(f"**Title:** {movie_details['title']}")
|
217 |
st.markdown(f"**TMDb Rating:** {movie_details['rating']}")
|
218 |
-
st.markdown(f"**Emotion:** {emotion}")
|
219 |
st.markdown(f"**Description:** {movie_details['description']}")
|
220 |
|
221 |
# Additional Information button with overlay using expander
|
|
|
120 |
|
121 |
# Only fetch and display movies if a genre is selected
|
122 |
if genre_name:
|
123 |
+
st.write("Please select at least one movie to generate recommendations.")
|
124 |
genre_id = genres[genre_name] # Get the genre ID based on the selected genre name
|
125 |
top_movies = get_top_movies_by_genre(genre_id) # Fetch top 10 movies in this genre, sorted by title length
|
126 |
|
|
|
172 |
if st.button("Show Recommendations"):
|
173 |
if st.session_state['selected_movies']:
|
174 |
# Step 1: Collect emotions of user-selected movies
|
175 |
+
with st.spinner("Analyzing emotions of selected movies..."):
|
176 |
+
selected_emotions = []
|
177 |
+
for movie_id in st.session_state['selected_movies']:
|
178 |
+
movie_details = get_movie_details(movie_id)
|
179 |
+
if movie_details:
|
180 |
+
emotion = analyze_emotion(movie_details["description"])
|
181 |
+
selected_emotions.append(emotion)
|
182 |
+
|
183 |
+
# Step 2: Collect similar movies for all selected movies
|
184 |
+
all_similar_movies = []
|
185 |
+
for movie_id in st.session_state['selected_movies']:
|
186 |
+
similar_movies = get_similar_movies(movie_id, genre_id)
|
187 |
+
if similar_movies:
|
188 |
+
all_similar_movies.extend(similar_movies)
|
189 |
+
|
190 |
+
# Step 3: Filter similar movies by matching emotions and remove duplicates
|
191 |
+
recommendations = []
|
192 |
+
seen_movie_ids = set(st.session_state['selected_movies']) # Start with user-selected movies to exclude them
|
193 |
+
|
194 |
+
with st.spinner("Filtering movies by description emotion..."):
|
|
|
195 |
for title, rating, poster_path, movie_id, description in all_similar_movies:
|
196 |
if movie_id not in seen_movie_ids: # Exclude already-seen movies
|
197 |
movie_emotion = analyze_emotion(description)
|
|
|
204 |
|
205 |
# Step 4: Display final recommendations
|
206 |
if st.session_state['recommendations']:
|
207 |
+
st.write("Based on your selections, you might also enjoy these top movies:")
|
208 |
for title, rating, poster_path, movie_id, emotion in sorted(st.session_state['recommendations'], key=lambda x: x[1], reverse=True)[:5]:
|
209 |
movie_details = get_movie_details(movie_id)
|
210 |
if movie_details:
|
|
|
214 |
with col2:
|
215 |
st.markdown(f"**Title:** {movie_details['title']}")
|
216 |
st.markdown(f"**TMDb Rating:** {movie_details['rating']}")
|
|
|
217 |
st.markdown(f"**Description:** {movie_details['description']}")
|
218 |
|
219 |
# Additional Information button with overlay using expander
|