Death.FM Cast Receiver
A custom Google Cast web receiver, the screen the TV shows when you cast Death.FM.

Why it exists
Google's prebuilt Styled Media Receiver can't show a sensible elapsed time for a live stream, and the sender-side workaround removes the progress bar entirely and makes stop unresumable. Writing a receiver fixes that and allows proper branding.
What it does
- A real elapsed-time display for the live stream, not a stuck 0:00.
- Death.FM branding and colours, with a LIVE badge and a station badge.
- Last.fm scrobbling that survives the phone app being closed: the receiver polls the now-playing API itself and runs its own Last.fm client.
- A station registry so the same receiver also handles SomaFM's Metal Detector.
Under the hood
- A Cloudflare Worker serves the receiver as static assets and adds a stream proxy, a now-playing lookup and a debug log endpoint. Scrobbling runs in the receiver page itself.
- A Durable Object keeps a rolling buffer of the live stream, so a Range continuation request from the Cast device gets genuinely contiguous bytes instead of a fresh live snapshot. It tears its upstream connection down after an idle period so it doesn't run (and bill) around the clock.
- Missing album art and track durations are looked up across fanart.tv, Deezer, Bandcamp and iTunes. Results, including confirmed misses, are cached in D1 and the images in R2.
- Deployed on every push through Cloudflare's git integration.
It isn't installed directly; the Windows and Android players cast to it automatically.