From 389376e43e8c715c8db5e58ce0654043f6e92df6 Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Tue, 25 Aug 2026 16:22:27 -0400 Subject: [PATCH] Fix Top Songs: accumulate play counts per scrape, deduplicate only stat card song_counts tallies how many times each song appears across all runs (powers the Top Songs ranking). total_scraped uses the unique seen set separately so the stat card stays deduplicated. Co-Authored-By: Claude Sonnet 4.6 --- journeyfm/web_service.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/journeyfm/web_service.py b/journeyfm/web_service.py index e3d6dbe..170113c 100644 --- a/journeyfm/web_service.py +++ b/journeyfm/web_service.py @@ -68,12 +68,11 @@ def load_recent_stats(db_path=None): sname = song.get("source", "Unknown") title = song.get("title", "?") artist = song.get("artist", "?") - k = (artist, title) - if k not in scraped_seen: - scraped_seen.add(k) - stats["song_counts"].setdefault(sname, {}) - dk = f"{artist} - {title}" - stats["song_counts"][sname][dk] = stats["song_counts"][sname].get(dk, 0) + 1 + scraped_seen.add((artist, title)) + # accumulate play count every scrape (powers Top Songs ranking) + stats["song_counts"].setdefault(sname, {}) + dk = f"{artist} - {title}" + stats["song_counts"][sname][dk] = stats["song_counts"][sname].get(dk, 0) + 1 except Exception: pass try: