7 Commits
Author SHA1 Message Date
poprhythm 4653e91f61 subwave: resolve duplicates after library additions unlocked new matches
User added several previously-recommended albums/compilations to the
library (AC/DC Ballbreaker, Rancid ...And Out Come the Wolves, Garbage,
Foo Fighters, Goo Goo Dolls, Melissa Etheridge x2, Big Shiny Tunes, MTV
Buzz Bin Vol. 2, etc.) and rescanned Navidrome. Re-running the matcher
across all 12 shows resolved many previous misses, which surfaced 6 new
cross-show duplicates (a song now matching in two shows at once). Each
was resolved by keeping the track on whichever show has its authentic/
better chart rank, matching the same policy used earlier this session.

Match counts after re-run: 1994 shows 13/29, 10/24, 10/27, 14/26; 1995
shows 22/30, 20/30, 19/30, 10/17; 1996 shows 17/35, 15/28, 19/29, 13/30.

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-12 23:54:07 +00:00
poprhythm ef77443e49 subwave: add 4 shows for 1994, fix a cross-show duplicate track
Adds Tunecaster Rock Top 30 for 1994-01-08, 1994-04-09, 1994-07-09, and
1994-10-15, checked against all existing shows' actual live Navidrome
playlist contents (not just the hand-compiled list of chart titles used so
far, which had already let one duplicate slip through -- see below) for
exact-track duplicates.

Also fixes a real duplicate: "Everclear - Santa Monica" was airing in both
the 1995-12-16 and 1996-01-13 shows, because the manual text-based dedup
check compared exact strings and missed that "Santa Monica" and "Santa
Monica (Watch The World Die)" resolve to the same library track (the
matcher's containment-boost logic correctly treats them as the same song;
the manual check didn't). Removed from 1995-12-16, kept on the thinner
1996-01-13 show.

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-11 22:45:16 +00:00
poprhythm d493b60c8b subwave: default playlistExhaust=true for created shows, fixes repeats
A playlistStrict show's no-repeat window scales down to a fraction of the
playlist size and disables entirely below 15 tracks (recency.ts's
effectiveNoRepeatWindow) -- every historical-chart playlist this script
builds is well under that (7-30 tracks), so repeats were essentially
unthrottled. playlistExhaust switches to a full-rotation window instead.
Also applied this fix retroactively to all 8 existing shows.

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-11 22:09:45 +00:00
poprhythm 7ec3dca180 subwave: add 4 more 1996 shows, add artist-score floor to fix false match
Adds Tunecaster Rock Top 30 for 1996-01-13, 1996-04-13, 1996-07-13, and
1996-12-14, cross-checked against all 4 existing 1995 shows and each other
for exact-track duplicates.

Also fixes a real false-positive: "John Mellencamp - Just Another Day" was
matching Jon Secada's unrelated song of the same generic title, because a
perfect title score could carry a middling-but-not-absurd artist-name
coincidence (0.56) over the acceptance threshold. Added a hard artist
similarity floor (0.65) independent of the combined score.

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-11 21:56:22 +00:00
poprhythm 4a311301e2 subwave: fix matcher scoring for composite credits/subtitles, add 3 more 1995 shows
score_candidate compared library tags verbatim against chart artist/title, so a
reissue's composite artist credit (e.g. "Green Day • Billie Joe Armstrong, Mike
Dirnt, & Tre Cool") or a dropped subtitle ("Sour Times" vs "Sour Times (Nobody
Loves Me)") could push an otherwise-correct match just under the score
threshold. Added whole-word substring containment as a scoring boost for both
fields, which recovered several real misses.

Also adds three more 1995 Tunecaster Rock Top 30 weeks (Jan 14, Jun 10, Dec 16)
alongside the existing Oct 28 show, cross-checked against it for exact-track
duplicates (swapped for a different real single by the same artist, or dropped
where none existed in the library).

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-11 21:50:39 +00:00
poprhythm ba624f33a1 subwave: add recreate_broadcast.py to build historical-chart shows
Given a hand-transcribed {station, date, tracks} JSON file (chart data is
sourced manually in conversation, never scraped in code -- ARSA's robots.txt
disallows automated fetching of its survey pages), matches tracks against the
Navidrome library, builds/updates a Navidrome playlist from the matches, and
wires it into a SUB/WAVE show with playlistStrict so it plays only that chart.

Claude-Session: https://claude.ai/code/session_01L7Rwa6guD5wK8F8tWQwcJX
2026-09-11 12:46:09 +00:00
poprhythm fb728d4bfc Add Navidrome and SUB/WAVE AI radio station
Navidrome indexes the existing music library on nas_media for Subsonic
access. SUB/WAVE (byo-proxy variant, LAN-only) provides the Icecast
broadcast, Liquidsoap crossfade/ducking, and AI DJ controller, reusing
the existing Ollama instance over npm-network for the LLM and Piper
for TTS.
2026-08-08 21:20:40 +00:00