17 Commits
Author SHA1 Message Date
nmemmert f41ca1d55a Merge branch 'main' of https://github.com/nmemmert/journey-fm-playlist 2026-08-26 09:06:22 -04:00
nmemmert 031c92b148 Merge branch 'master' 2026-08-26 09:06:06 -04:00
nmemmert b373f29b67 Merge pull request #4 from nmemmert/master
Master
2026-08-26 09:05:23 -04:00
nmemmertandClaude Sonnet 4.6 7efb9265e6 Add per-playlist station selection
Each playlist now has its own station checkboxes in Settings.
Sync scrapes the union of all stations once, then filters songs
by source before syncing each playlist separately.

Config stored as PLAYLISTS JSON: [{name, stations}, ...].
Backward-compatible with flat PLAYLIST_NAME + SELECTED_STATIONS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-26 09:04:34 -04:00
nmemmertandClaude Sonnet 4.6 ff174a70ce Add multiple playlist support; fix settings save in container
- PLAYLIST_NAMES config key (comma-separated list); falls back to PLAYLIST_NAME
- run_update_job syncs songs to every configured playlist, merges results
- Settings form: dynamic add/remove playlist rows instead of single input
- get_web_config reads config.json directly so form is consistent in
  container environments where env vars override runtime config
- Playlist tab: dropdown to pick which playlist to browse when multiple exist

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-26 08:57:00 -04:00
nmemmert eed3eabfc4 Merge branch 'master' 2026-08-25 16:23:24 -04:00
nmemmertandClaude Sonnet 4.6 389376e43e 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 <noreply@anthropic.com>
2026-08-25 16:22:27 -04:00
nmemmertandClaude Sonnet 4.6 8f28d9c9ce Deduplicate missing/scraped stats; show matched from latest run
- total_scraped: unique songs ever seen playing (not per-run sum)
- total_missing: unique songs ever reported not in Plex library
- total_matched: matched_count from most recent successful run
- Added (144) stays cumulative — each add is a real playlist event

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-25 13:45:10 -04:00
nmemmert cb31f97e27 Merge pull request #3 from nmemmert/master
Count unique scraped songs instead of cumulative per-run totals
2026-08-25 13:35:58 -04:00
nmemmertandClaude Sonnet 4.6 b394416ed7 Count unique scraped songs instead of cumulative per-run totals
total_scraped and station_counts now reflect distinct songs seen
across all history, not the sum of scraped_count per run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-25 13:35:24 -04:00
nmemmert 170f784365 Merge pull request #2 from nmemmert/master
Add live sync log, playlist viewer, donut chart, history expand, buy …
2026-08-25 12:28:59 -04:00
nmemmertandClaude Sonnet 4.6 12b6b15206 Add live sync log, playlist viewer, donut chart, history expand, buy list dedup, and date filter
- SSE-based live sync log drawer (ThreadingHTTPServer + queue.Queue log handler)
- Playlist tab: load tracks from Plex, sort, per-track remove
- Match rate donut chart alongside station bar on Overview
- Expandable history rows showing per-station breakdown chips
- Buy list dedup (POST /api/buy-list-dedup) + Copy All Links button
- Date range filter on History run log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-25 12:18:02 -04:00
nmemmert c0ebe118cb Fix pythonw logging handler crashes and reduce noisy dependency logs 2026-02-25 18:11:40 +00:00
nmemmert 3e4ce93824 Improve Windows installer, shortcuts, GUI reliability, and README 2026-02-25 17:55:44 +00:00
nmemmert 6ea9c6647a Merge pull request #1 from nmemmert/copilot/add-playlist-name-customization 2025-11-28 11:35:12 -05:00
nmemmert 345c40f40d Update main.py with a new script 2025-11-15 08:49:41 -05:00
nmemmert 2a34d0cc93 Initial commit: Journey FM playlist automation script 2025-11-15 08:35:18 -05:00