From c53983f1572550b877eae86c55d26ec8f7a9b184 Mon Sep 17 00:00:00 2001 From: minster586 <43217359+minster586@users.noreply.github.com> Date: Sat, 31 Oct 2026 04:30:43 -0400 Subject: [PATCH] Updated the readme --- README.md | 184 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 132 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index c11c15d..40ee343 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,139 @@ -# RadioDJViewer v1.8.0 +# RadioDJViewer v1.15.1 -**RadioDJViewer** is a high-performance Windows application designed to bridge the gap between RadioDJ and your broadcast visuals. It fetches live "Now Playing" data from the RadioDJ REST API and serves it simultaneously to physical local files and a built-in network web server. +**RadioDJViewer** is a Windows desktop app that reads Now Playing data from the RadioDJ REST API and publishes it to: -## 🚀 New in v1.8.0: The Web Update -* **Integrated Web Server:** Hosts a live, high-performance web widget for OBS Browser Sources. -* **Tri-State Status Indicator:** - * 🔴 **Red:** Disconnected from RadioDJ API. - * 🟢 **Green:** Connected to API (Web Server Off). - * 🔵 **Blue:** Full Broadcast Mode (API Connected + Web Server Live). -* **Memory-Caching:** Data is served to the web widget directly from RAM for zero-latency updates and reduced disk wear. -* **Network-Wide Access:** View your "Now Playing" widget on any device (Phones, Tablets, or second PCs) on your local network. +- local output files (`.txt` + album-art image) +- an embedded HTTP widget server for OBS/browser overlays +- Windows media integrations (SMTC + optional track-change toasts) -## 🛠 Features -* Connects to RadioDJ REST API to acquire real-time song info. -* Displays title, artist, and album (with scrolling marquee for long text). -* Dual-Output: Exports `.txt` and `.png` files for legacy GDI+ sources while hosting the web stream. -* Supports multiple profiles for different RadioDJ instances. -* Auto-regenerates missing `profiles.json` and fallback images. +## What Changed Since the Old `v1.8.0` README -## 🌐 Web API Endpoints -Once the server is active (Blue Status), you can access the following data URLs locally or over your network: +This project has moved beyond the original web-server-focused release notes. The app now includes: -| Resource | URL (Localhost) | Purpose | -| :--- | :--- | :--- | -| **Main Widget** | `http://127.0.0.1:8181/` | Loads the full HTML/CSS/JS widget for OBS. | -| **Song Title** | `http://127.0.0.1:8181/title.txt` | Returns the raw text of the current song. | -| **Artist Name** | `http://127.0.0.1:8181/artist.txt` | Returns the raw text of the current artist. | -| **Album Art** | `http://127.0.0.1:8181/Album-Art.png` | Serves the current album art image bytes. | - -*Note: Replace `127.0.0.1` with your computer's local IP address to access these from other devices.* - -## 📋 Requirements -* Windows 7 or later. -* .NET Framework 4.7.2. -* RadioDJ with the **REST Server Plugin** enabled and configured. - -## 🔧 Installation & Setup -1. **Download & Extract:** Run the `RadioDJViewer.exe`. -2. **Run as Administrator:** This is required for the Web Server to bind to your network port. -3. **Configure API:** Enter your RadioDJ IP, Port, and Auth Key in the settings. -4. **Set Output:** Choose a folder for your physical text and image files (e.g., `H:/RDJ-Output/`). -5. **Connect:** Click **Connect**. Your status box should turn **Blue** when everything is active. - -## 🌐 Network & Firewall Setup -To allow other devices to see the widget, you must open the port in the Windows Firewall: -1. Open **Windows Firewall with Advanced Security**. -2. Create a **New Inbound Rule** -> **Port** -> **TCP**. -3. Enter Port **8181** (or your chosen port) and select **Allow the connection**. - -## 📝 Credits -This program was developed as a learning journey into C# and .NET, with collaborative assistance from **Microsoft Copilot** and **Google Gemini** to refine the API parsing and web server logic. - -## 🔗 Links -* **Repository:** [https://git.smartcraft.me/minster586/RadioDJViewer](https://git.smartcraft.me/minster586/RadioDJViewer) -* **Contact/Stream:** [https://links.smartcraft.me/@minster586](https://links.smartcraft.me/@minster586) +- **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). --- -For questions or issues, please open an issue on the repository or contact the maintainer. \ No newline at end of file + +## 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. \ No newline at end of file