lenawilli commited on
Commit
30d37b9
·
verified ·
1 Parent(s): bb4c717

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +14 -9
src/streamlit_app.py CHANGED
@@ -53,19 +53,24 @@ def get_tmdb_data(title, year=None):
53
  pass
54
  return POSTER_PLACEHOLDER, None
55
 
56
- def load_ratings():
 
57
  if os.path.exists(RATINGS_JSON_PATH):
58
  with open(RATINGS_JSON_PATH, "r") as f:
59
  return json.load(f)
60
  return []
61
 
 
62
  def save_rating_to_json(entry):
63
- all_ratings = load_ratings()
64
  all_ratings = [r for r in all_ratings if r["movie_id"] != entry["movie_id"]]
65
  all_ratings.append(entry)
66
  with open(RATINGS_JSON_PATH, "w") as f:
67
  json.dump(all_ratings, f, indent=2, default=str)
68
 
 
 
 
69
  @st.cache_data(show_spinner=False)
70
  def load_movies():
71
  df = pd.read_csv(MOVIES_PATH)
@@ -180,7 +185,7 @@ movie_id = query_params.get("movie_id")
180
  def render_star_rating(rating):
181
  return "".join(["<span class='star'>★</span>" for _ in range(rating)])
182
 
183
- all_ratings_data = load_ratings()
184
 
185
  if movie_id:
186
  try:
@@ -216,15 +221,15 @@ if movie_id:
216
  if st.button("Submit Rating", key="submit_rating_btn"):
217
  save_rating_to_json({
218
  "movie_id": int(movie["movieId"]),
219
- "rating": rating,
220
  "timestamp": datetime.now().isoformat()
221
  })
222
- st.session_state["just_submitted"] = True
223
- st.rerun()
 
 
 
224
 
225
- if st.session_state.get("just_submitted"):
226
- st.success("Rating saved.")
227
- del st.session_state["just_submitted"]
228
 
229
 
230
  except Exception as e:
 
53
  pass
54
  return POSTER_PLACEHOLDER, None
55
 
56
+ @st.cache_data
57
+ def load_ratings_cached():
58
  if os.path.exists(RATINGS_JSON_PATH):
59
  with open(RATINGS_JSON_PATH, "r") as f:
60
  return json.load(f)
61
  return []
62
 
63
+
64
  def save_rating_to_json(entry):
65
+ all_ratings = load_ratings_cached()
66
  all_ratings = [r for r in all_ratings if r["movie_id"] != entry["movie_id"]]
67
  all_ratings.append(entry)
68
  with open(RATINGS_JSON_PATH, "w") as f:
69
  json.dump(all_ratings, f, indent=2, default=str)
70
 
71
+ # Cache invalidieren
72
+ load_ratings_cached.clear()
73
+
74
  @st.cache_data(show_spinner=False)
75
  def load_movies():
76
  df = pd.read_csv(MOVIES_PATH)
 
185
  def render_star_rating(rating):
186
  return "".join(["<span class='star'>★</span>" for _ in range(rating)])
187
 
188
+ all_ratings_data = load_ratings_cached()
189
 
190
  if movie_id:
191
  try:
 
221
  if st.button("Submit Rating", key="submit_rating_btn"):
222
  save_rating_to_json({
223
  "movie_id": int(movie["movieId"]),
224
+ "rating": new_rating,
225
  "timestamp": datetime.now().isoformat()
226
  })
227
+
228
+ st.success("Rating saved.") # Sofort anzeigen
229
+ # Query-Parameter setzen, um neu zu laden und auf derselben Detailseite zu bleiben
230
+ st.experimental_set_query_params(movie_id=movie["movieId"])
231
+ st.experimental_rerun()
232
 
 
 
 
233
 
234
 
235
  except Exception as e: