Spaces:
Running
Running
Update app.py
Browse files
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("%
|
| 212 |
})
|
| 213 |
_save_lb(entries)
|
| 214 |
|
| 215 |
def _render_leaderboard() -> str:
|
| 216 |
entries = _load_lb()
|
| 217 |
ds_count = _dataset_count()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
|
| 219 |
-
if not
|
| 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.
|
| 223 |
|
| 224 |
-
sorted_asc = sorted(
|
| 225 |
-
sorted_desc = sorted(
|
| 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 |
-
|
| 268 |
-
avg_pct = round(sum(e["pct"] for e in
|
| 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}
|
| 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 |
-
{
|
| 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 · Ø {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())
|