aidn commited on
Commit
a01726f
·
verified ·
1 Parent(s): 03e6134

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -13
app.py CHANGED
@@ -208,21 +208,34 @@ def _add_to_lb(post_text, total, max_score, verdict):
208
  "max": max_score,
209
  "pct": round(total / max_score * 100) if max_score else 0,
210
  "verdict": verdict,
211
- "date": datetime.datetime.now().strftime("%d.%m.%Y"),
212
  })
213
  _save_lb(entries)
214
 
215
  def _render_leaderboard() -> str:
216
  entries = _load_lb()
217
  ds_count = _dataset_count()
 
 
 
 
 
 
 
 
 
 
 
 
 
218
 
219
- if not entries:
220
- ds_hint = f'<p style="color:#888;font-size:.8rem;text-align:center;margin-top:8px;">HF Dataset: <strong>{ds_count}</strong> Einträge gespeichert</p>' if DATASET_REPO else ""
221
  return f"""<p style='color:#888;font-size:.85rem;text-align:center;padding:20px;'>
222
- Noch keine Einträge. Analysiere einen LinkedIn-Post um zu starten.</p>{ds_hint}"""
223
 
224
- sorted_asc = sorted(entries, key=lambda x: x["pct"])
225
- sorted_desc = sorted(entries, key=lambda x: x["pct"], reverse=True)
226
  best = sorted_asc[:15]
227
  worst = sorted_desc[:15]
228
 
@@ -264,8 +277,8 @@ def _render_leaderboard() -> str:
264
  best_html = "".join(entry_html(e, i, side="best") for i, e in enumerate(best))
265
  worst_html = "".join(entry_html(e, i, side="worst") for i, e in enumerate(worst))
266
 
267
- total_count = len(entries)
268
- avg_pct = round(sum(e["pct"] for e in entries) / total_count)
269
 
270
  dataset_badge = ""
271
  if DATASET_REPO:
@@ -273,7 +286,7 @@ def _render_leaderboard() -> str:
273
  <a href="https://huggingface.co/datasets/{DATASET_REPO}" target="_blank"
274
  style="font-size:.75rem;color:#fff;background:#FF6B35;border-radius:99px;
275
  padding:3px 10px;text-decoration:none;font-weight:600;">
276
- 🤗 Dataset: {ds_count} Einträge
277
  </a>"""
278
 
279
  return f"""
@@ -282,9 +295,9 @@ def _render_leaderboard() -> str:
282
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap;">
283
  <span style="font-size:1.3rem;">🏆</span>
284
  <span style="font-weight:700;font-size:.95rem;color:#004182;
285
- text-transform:uppercase;letter-spacing:.5px;">Leaderboard</span>
286
  <span style="font-size:.78rem;color:#888;">
287
- {total_count} Einträge &nbsp;&middot;&nbsp; Ø {avg_pct}% Nonsense
288
  </span>
289
  <div style="margin-left:auto; display:flex; flex-direction:column; align-items:flex-end; gap:4px;">
290
  {dataset_badge}
@@ -768,9 +781,9 @@ with gr.Blocks(title="LinkedIn Translator") as demo:
768
 
769
  # ── Leaderboard & Infos (Tabs) ────────────────────────────────────────────
770
  with gr.Tabs():
771
-
772
  # TAB 1: Leaderboard (Standardmäßig geöffnet)
773
- with gr.Tab("🏆 Leaderboard"):
774
  with gr.Row():
775
  with gr.Column():
776
  lb_out = gr.HTML(value=_render_leaderboard())
 
208
  "max": max_score,
209
  "pct": round(total / max_score * 100) if max_score else 0,
210
  "verdict": verdict,
211
+ "date": datetime.datetime.now().strftime("%Y-%m-%d"), # Auf ISO Format für sauberes Filtern umgestellt
212
  })
213
  _save_lb(entries)
214
 
215
  def _render_leaderboard() -> str:
216
  entries = _load_lb()
217
  ds_count = _dataset_count()
218
+
219
+ # Aktuellen Monat und Jahr bestimmen (für Filter und UI)
220
+ now = datetime.datetime.now()
221
+ german_months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
222
+ month_name = german_months[now.month - 1]
223
+ display_month = f"{month_name} {now.year}"
224
+
225
+ # Filter-Strings für ISO ("2026-04") und falls noch alte Deutsche Dates existieren (".04.2026")
226
+ current_iso = now.strftime("%Y-%m")
227
+ current_ger = now.strftime(f".%m.%Y")
228
+
229
+ # NEU: Nur Einträge aus diesem Monat filtern!
230
+ monthly_entries = [e for e in entries if e.get("date", "").startswith(current_iso) or current_ger in e.get("date", "")]
231
 
232
+ if not monthly_entries:
233
+ ds_hint = f'<p style="color:#888;font-size:.8rem;text-align:center;margin-top:8px;">HF Dataset: <strong>{ds_count}</strong> Einträge historisch gespeichert</p>' if DATASET_REPO else ""
234
  return f"""<p style='color:#888;font-size:.85rem;text-align:center;padding:20px;'>
235
+ Noch keine Einträge im <strong>{display_month}</strong>. Sei der Erste, der diesen Monat das Board stürmt!</p>{ds_hint}"""
236
 
237
+ sorted_asc = sorted(monthly_entries, key=lambda x: x["pct"])
238
+ sorted_desc = sorted(monthly_entries, key=lambda x: x["pct"], reverse=True)
239
  best = sorted_asc[:15]
240
  worst = sorted_desc[:15]
241
 
 
277
  best_html = "".join(entry_html(e, i, side="best") for i, e in enumerate(best))
278
  worst_html = "".join(entry_html(e, i, side="worst") for i, e in enumerate(worst))
279
 
280
+ total_monthly_count = len(monthly_entries)
281
+ avg_pct = round(sum(e["pct"] for e in monthly_entries) / total_monthly_count)
282
 
283
  dataset_badge = ""
284
  if DATASET_REPO:
 
286
  <a href="https://huggingface.co/datasets/{DATASET_REPO}" target="_blank"
287
  style="font-size:.75rem;color:#fff;background:#FF6B35;border-radius:99px;
288
  padding:3px 10px;text-decoration:none;font-weight:600;">
289
+ 🤗 Dataset gesamt: {ds_count}
290
  </a>"""
291
 
292
  return f"""
 
295
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap;">
296
  <span style="font-size:1.3rem;">🏆</span>
297
  <span style="font-weight:700;font-size:.95rem;color:#004182;
298
+ text-transform:uppercase;letter-spacing:.5px;">Monthly Leaderboard ({display_month})</span>
299
  <span style="font-size:.78rem;color:#888;">
300
+ {total_monthly_count} Einträge diesen Monat &nbsp;&middot;&nbsp; Ø {avg_pct}% Nonsense
301
  </span>
302
  <div style="margin-left:auto; display:flex; flex-direction:column; align-items:flex-end; gap:4px;">
303
  {dataset_badge}
 
781
 
782
  # ── Leaderboard & Infos (Tabs) ────────────────────────────────────────────
783
  with gr.Tabs():
784
+
785
  # TAB 1: Leaderboard (Standardmäßig geöffnet)
786
+ with gr.Tab("🏆 Monthly Leaderboard"):
787
  with gr.Row():
788
  with gr.Column():
789
  lb_out = gr.HTML(value=_render_leaderboard())