138 lines
4.0 KiB
Markdown
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. |