KJ commited on
Commit
8f43b7e
·
1 Parent(s): 82cb089

reverting api

Browse files
Files changed (1) hide show
  1. app.py +7 -39
app.py CHANGED
@@ -2,7 +2,6 @@ import streamlit as st
2
  import pandas as pd
3
  import plotly.express as px
4
  from sqlalchemy import create_engine, text
5
- from urllib.parse import unquote
6
 
7
  # --- Language toggle ---
8
  LANG = st.radio("Language / Език", ["English", "Български"], horizontal=True)
@@ -52,44 +51,9 @@ def get_data():
52
  df["created_at"] = pd.to_datetime(df["created_at"], unit="s")
53
  return df
54
 
55
- df = get_data()
56
-
57
- # --- API mode handling ---
58
- params = st.query_params
59
- route = params.get("api", [None])[0]
60
-
61
- if route == "meta":
62
- st.json({
63
- "entities": sorted(df["entity"].dropna().unique().tolist()),
64
- "domains": sorted(df["domain"].dropna().unique().tolist()),
65
- "score_types": ["entity_score", "title_score", "overall_score"],
66
- "min_date": df["created_at"].min().isoformat(),
67
- "max_date": df["created_at"].max().isoformat(),
68
- })
69
- st.stop()
70
-
71
- elif route == "data":
72
- entity = unquote(params.get("entity", [""])[0])
73
- domain = unquote(params.get("domain", [""])[0])
74
- score = params.get("score", ["entity_score"])[0]
75
-
76
- df_filtered = df.copy()
77
- if entity:
78
- df_filtered = df_filtered[df_filtered["entity"] == entity]
79
- if domain:
80
- df_filtered = df_filtered[df_filtered["domain"] == domain]
81
-
82
- if score not in ["entity_score", "title_score", "overall_score"]:
83
- st.json({"error": "Invalid score type"})
84
- else:
85
- df_out = df_filtered[["created_at", "entity", "domain", score]].copy()
86
- df_out["created_at"] = df_out["created_at"].astype(str)
87
- df_out.rename(columns={score: "score"}, inplace=True)
88
- st.json(df_out.to_dict(orient="records"))
89
- st.stop()
90
-
91
- # --- UI (non-API) ---
92
  st.title(T[LANG]["title"])
 
93
 
94
  entity_counts = df["entity"].value_counts()
95
  domain_counts = df["domain"].value_counts()
@@ -156,6 +120,8 @@ if not filtered_df.empty:
156
  return label
157
 
158
  grouped["label"] = grouped.apply(build_label, axis=1)
 
 
159
  label_avg = grouped.groupby("label")["score"].mean().reset_index(name="avg_score")
160
  grouped = grouped.merge(label_avg, on="label")
161
  grouped = grouped.sort_values(by=["avg_score", "date"], ascending=[False, True])
@@ -183,7 +149,6 @@ if not filtered_df.empty:
183
  stats_group = ["entity"]
184
  if group_by_domain:
185
  stats_group.append("domain")
186
-
187
  stats = (
188
  filtered_df.groupby(stats_group)[score_type]
189
  .agg(["mean", "count"])
@@ -205,6 +170,8 @@ if not filtered_df.empty:
205
  return label
206
 
207
  grouped["label"] = grouped.apply(build_label, axis=1)
 
 
208
  label_avg = grouped.groupby("label")[score_type].mean().reset_index(name="avg_score")
209
  grouped = grouped.merge(label_avg, on="label")
210
  grouped = grouped.sort_values(by=["avg_score", "date"], ascending=[False, True])
@@ -218,6 +185,7 @@ if not filtered_df.empty:
218
  title=T[LANG]["avg_over_time"].format(score_type.replace("_", " ").title())
219
  )
220
 
 
221
  shapes = []
222
  for y in range(-10, 11):
223
  shapes.append({
 
2
  import pandas as pd
3
  import plotly.express as px
4
  from sqlalchemy import create_engine, text
 
5
 
6
  # --- Language toggle ---
7
  LANG = st.radio("Language / Език", ["English", "Български"], horizontal=True)
 
51
  df["created_at"] = pd.to_datetime(df["created_at"], unit="s")
52
  return df
53
 
54
+ # --- UI ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  st.title(T[LANG]["title"])
56
+ df = get_data()
57
 
58
  entity_counts = df["entity"].value_counts()
59
  domain_counts = df["domain"].value_counts()
 
120
  return label
121
 
122
  grouped["label"] = grouped.apply(build_label, axis=1)
123
+
124
+ # ✅ Sort by avg score then by date
125
  label_avg = grouped.groupby("label")["score"].mean().reset_index(name="avg_score")
126
  grouped = grouped.merge(label_avg, on="label")
127
  grouped = grouped.sort_values(by=["avg_score", "date"], ascending=[False, True])
 
149
  stats_group = ["entity"]
150
  if group_by_domain:
151
  stats_group.append("domain")
 
152
  stats = (
153
  filtered_df.groupby(stats_group)[score_type]
154
  .agg(["mean", "count"])
 
170
  return label
171
 
172
  grouped["label"] = grouped.apply(build_label, axis=1)
173
+
174
+ # ✅ Sort by avg score then by date
175
  label_avg = grouped.groupby("label")[score_type].mean().reset_index(name="avg_score")
176
  grouped = grouped.merge(label_avg, on="label")
177
  grouped = grouped.sort_values(by=["avg_score", "date"], ascending=[False, True])
 
185
  title=T[LANG]["avg_over_time"].format(score_type.replace("_", " ").title())
186
  )
187
 
188
+ # Grid lines at every integer, thicker at -5 and 5
189
  shapes = []
190
  for y in range(-10, 11):
191
  shapes.append({