# RadioDJViewer v1.15.1 **RadioDJViewer** is a Windows desktop app that reads Now Playing data from the RadioDJ REST API and publishes it to: - local output files (`.txt` + album-art image) - an embedded HTTP widget server for OBS/browser overlays - Windows media integrations (SMTC + optional track-change toasts) ## What Changed Since the Old `v1.8.0` README This project has moved beyond the original web-server-focused release notes. The app now includes: - **Version update:** now documented at **v1.15.1**. - **Profile-level toggles** for: - Web server enable/port - Clock visibility - Toast notifications - SMTC publishing - **Expanded web endpoints** for time/playback state, not only title/artist/artwork. - **SMTC integration** with metadata, artwork, playback status, and timeline behavior. - **Live-stream SMTC handling** (`Duration <= 0`) that keeps playback reported as active. - **Track-change toast notifications** with generated hero artwork. - **Polling-rate support** per profile. - **UI status behavior** remains tri-state (Disconnected/API/Web+API). --- ## Core Features - Connects to RadioDJ REST API and parses: - `Title` - `Artist` - `Album` - `AlbumArt` - `Elapsed` - `Duration` - Writes metadata output files for broadcast workflows. - Serves a browser widget over HTTP from embedded resources. - Caches metadata and artwork in memory for low-latency serving. - Supports multiple saved profiles in `profiles.json`. - Supports dark-mode theming in the app/settings UI. ## Playback and Time Behavior The app tracks playback state from API `Elapsed` + `Duration` values. - For normal tracks (`Duration > 0`): - elapsed/duration time is calculated and exposed - paused state can be inferred from unchanged elapsed progression - For live streams (`Duration <= 0`): - treated as live (non-scrubbable) - SMTC is forced to active `Playing` - play/pause controls are disabled for read-only behavior - fixed-length timeline updates are bypassed ## Windows Integration ### SMTC (System Media Transport Controls) When enabled per profile, the app publishes: - title + artist - current artwork thumbnail - playback status (`Playing`/`Paused`/`Stopped`) - timeline properties for fixed-duration tracks Live-stream mode is intentionally read-only and continuously reported as playing for system widgets/tools that depend on active media state. ### Toast Notifications When enabled per profile, track-change toasts can be shown with: - title - artist - attribution line (date/time) - generated 16:9 hero artwork image ## Embedded Web Server When enabled, the app starts an HTTP listener on the profile-configured port. ### Main Widget - `http://127.0.0.1:/` - `http://127.0.0.1:/index.html` ### Metadata / State Endpoints - `http://127.0.0.1:/title.txt` - `http://127.0.0.1:/artist.txt` - `http://127.0.0.1:/time.txt` - `http://127.0.0.1:/elapsed` - `http://127.0.0.1:/duration` - `http://127.0.0.1:/clock-visibility` - `http://127.0.0.1:/status.json` ### Assets - `http://127.0.0.1:/Album-Art.png` - `http://127.0.0.1:/album-art.png` - `http://127.0.0.1:/style.css` - `http://127.0.0.1:/script.js` The widget JavaScript supports refresh tuning via query string: - `?refreshrate=` ## Status Indicator (App UI) - 🔴 **Red**: Disconnected - 🟢 **Green**: Connected to API, web server off - 🔵 **Blue**: Connected to API + web server running ## Requirements - Windows - **.NET Framework 4.7.2** - RadioDJ with REST API/plugin access configured ## Setup 1. Launch `RadioDJViewer.exe`. 2. Open settings and create/load a profile. 3. Configure API values (`IP`, `Port`, `Password`, URL format). 4. Configure output folder and images folder. 5. Optional: configure polling rate, web server port, clock visibility, toast, and SMTC. 6. Connect to API. ## Repository - `https://git.smartcraft.me/minster586/RadioDJViewer` ## Credits Built and maintained by Smartcraft Media Group. --- If you find an issue or need a feature adjustment, open an issue in the repository.