Files
RadioDJViewer/README.md
T

138 lines
4.0 KiB
Markdown

# 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:<port>/`
- `http://127.0.0.1:<port>/index.html`
### Metadata / State Endpoints
- `http://127.0.0.1:<port>/title.txt`
- `http://127.0.0.1:<port>/artist.txt`
- `http://127.0.0.1:<port>/time.txt`
- `http://127.0.0.1:<port>/elapsed`
- `http://127.0.0.1:<port>/duration`
- `http://127.0.0.1:<port>/clock-visibility`
- `http://127.0.0.1:<port>/status.json`
### Assets
- `http://127.0.0.1:<port>/Album-Art.png`
- `http://127.0.0.1:<port>/style.css`
- `http://127.0.0.1:<port>/script.js`
The widget JavaScript supports refresh tuning via query string:
- `?refreshrate=<seconds>`
## 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.