JSenkCC commited on
Commit
692ccba
·
verified ·
1 Parent(s): 90e305d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -24
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.warning("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,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.write("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
- st.write(f"**{movie_details['title']}** - Emotion: {emotion}")
183
-
184
- # Step 2: Collect similar movies for all selected movies
185
- all_similar_movies = []
186
- for movie_id in st.session_state['selected_movies']:
187
- similar_movies = get_similar_movies(movie_id, genre_id)
188
- if similar_movies:
189
- all_similar_movies.extend(similar_movies)
190
-
191
- # Step 3: Filter similar movies by matching emotions and remove duplicates
192
- recommendations = []
193
- seen_movie_ids = set(st.session_state['selected_movies']) # Start with user-selected movies to exclude them
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 5 movies:")
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