Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- 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 |
-
|
|
|
|
| 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 =
|
| 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 =
|
| 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":
|
| 220 |
"timestamp": datetime.now().isoformat()
|
| 221 |
})
|
| 222 |
-
|
| 223 |
-
st.
|
|
|
|
|
|
|
|
|
|
| 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:
|