Dashboard web in tempo reale per la regia radiofonica. Il progetto legge i dati della Web API di RadioDJ, li normalizza e li invia ai browser via WebSocket. Include inoltre un secondo servizio per inviare messaggi rapidi dalla regia a un display dedicato allo speaker.
Il nome storico della repository è
GRSTelePromter; nella documentazione viene usata la grafiaGRSTelePrompter.
- brano in onda con titolo, artista, album, anno, categoria e sottocategoria;
- durata, tempo trascorso, tempo rimanente e countdown dell'intro;
- barra di avanzamento interpolata, marker
INTROeCHIUSURAe avvisi visivi finali; - elenco delle quattro tracce successive, con rilevamento sweep/jingle;
- indicatore dello stato della sincronizzazione WebSocket;
- pannello regia per inviare testo libero o messaggi preimpostati allo speaker;
- configurazione backend tramite variabili ambiente.
Il repository contiene due processi separati:
| Servizio | Avvio | HTTP | WebSocket | Pagine principali |
|---|---|---|---|---|
| Dashboard RadioDJ | npm start |
3000 |
8081 |
/radiodjv5.html |
| Messaggi speaker | node server.js |
3020 |
3020 |
/admin.html, /screen.html |
flowchart LR
R[RadioDJ Web API] -->|XML via HTTP| B[serverrdj.js]
B -->|file statici :3000| D[Dashboard browser]
B -->|JSON via WS :8081| D
A[Pannello admin] -->|testo via WS :3020| T[server.js]
T -->|broadcast| S[Display speaker]
- Node.js 18 o successivo;
- npm;
- RadioDJ con Web API attiva, per la dashboard musicale;
- connettività tra server, RadioDJ e browser sulle porte configurate.
git clone https://github.com/simone7121/GRSTelePromter.git
Set-Location GRSTelePromter
npm ci
Copy-Item .env.example .envModifica .env con l'URL e l'eventuale credenziale della Web API RadioDJ, quindi avvia:
npm startApri http://localhost:3000/radiodjv5.html.
node server.jsApri:
http://localhost:3020/admin.htmlsul computer della regia;http://localhost:3020/screen.htmlsul display dello speaker.
I due servizi possono essere eseguiti contemporaneamente perché usano porte diverse.
| Variabile | Default | Descrizione |
|---|---|---|
HTTP_PORT |
3000 |
Porta HTTP della dashboard RadioDJ |
WS_PORT |
8081 |
Porta WebSocket della dashboard RadioDJ |
RADIODJ_BASE_URL |
http://127.0.0.1:5555 |
URL base della Web API RadioDJ |
RADIODJ_AUTH |
vuoto | Credenziale aggiunta come parametro auth alle richieste RadioDJ |
RADIODJ_POLL_MS |
50 |
Intervallo di polling per ogni client WebSocket |
NEXT_TRACKS_COUNT |
4 |
Numero di tracce successive richieste al backend |
RADIODJ_DEBUG_FIELDS |
0 |
Con 1, stampa in console i campi ricevuti da RadioDJ |
Se modifichi WS_PORT, aggiorna anche WS_URL in public/app.config.js. La UI radiodjv5.html dispone di quattro righe, quindi valori di NEXT_TRACKS_COUNT superiori a 4 non vengono visualizzati integralmente.
La configurazione completa è descritta in docs/CONFIGURATION.md.
.
├── config/ # configurazione backend
├── docs/ # documentazione tecnica
├── public/ # interfacce HTML/CSS/JavaScript
├── serverrdj.js # dashboard RadioDJ
├── server.js # relay messaggi speaker
├── .env.example # esempio di configurazione
└── package.json
Le pagine radiodj.html e radiodjv2.html-radiodjv4.html sono versioni storiche. Per nuove installazioni usa radiodjv5.html, l'unica variante collegata a public/app.config.js.
- Indice della documentazione
- Installazione
- Configurazione
- Utilizzo
- Architettura
- Analisi tecnica e priorità
- Protocollo WebSocket e API RadioDJ
- Backend
- Frontend
- Container Linux
- Sviluppo e verifiche
- Risoluzione dei problemi
- Changelog
I server non implementano autenticazione, autorizzazione, rate limiting o TLS. Sono pensati per una rete di regia fidata. Prima di esporli su Internet usa un reverse proxy HTTPS/WSS, limita gli accessi e proteggi le porte con firewall o VPN.
Il polling RadioDJ viene creato per ogni client WebSocket: aumentando i display aumenta anche il numero di richieste alla Web API. Il repository non include ancora test automatici.
Consulta SECURITY.md per segnalare una vulnerabilità.
Prima di proporre modifiche leggi CONTRIBUTING.md. Per assistenza usa le GitHub Issues seguendo le indicazioni in SUPPORT.md.
Il software è distribuito secondo la PolyForm Noncommercial License 1.0.0. La licenza consente gli usi non commerciali definiti nel testo completo; non concede automaticamente il diritto a usi commerciali. Le dipendenze di terze parti restano soggette alle rispettive licenze.
