=== LoffredoApps Service Audio ===
Contributors: loffredoapps
Tags: web radio, audio player, icecast, metadata, now playing
Requires at least: 6.2
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Player professionale per web radio con metadati, copertine, Media Session, mini-player e navigazione AJAX opzionale.

== Descrizione ==

LoffredoApps Service Audio aggiunge a WordPress un player responsive per web radio.

Funzioni principali:

* Stream audio HTML5 con controllo volume.
* Proxy REST WordPress per evitare gli errori CORS sui metadati.
* Estrazione automatica di StreamTitle dai metadati ICY incorporati nello stream.
* Supporto Icecast status-json.xsl, AzuraCast e JSON personalizzato.
* Ricerca opzionale delle copertine tramite MusicBrainz e Cover Art Archive.
* Logo della radio come copertina di riserva.
* Media Session per titolo, copertina e controlli del dispositivo.
* Modalità popup predefinita: sul sito resta solo un pulsante “Ascolta la radio”.
* Mini-player in finestra separata per ascoltare durante la navigazione.
* Navigazione AJAX sperimentale per mantenere il player nella stessa pagina.
* Barra fissa oppure shortcode [loffredoapps_audio].
* Shortcode dedicato al pulsante popup [loffredoapps_audio_popup].

== Installazione ==

1. In WordPress apri Plugin > Aggiungi nuovo > Carica plugin.
2. Seleziona il file ZIP del plugin.
3. Attiva “LoffredoApps Service Audio”.
4. Apri “Service Audio” nel menu di amministrazione.
5. Inserisci l’URL dello stream e salva.

== Configurazione metadati ==

Il plugin può leggere il primo blocco ICY incorporato nello stream e chiude immediatamente la connessione dopo avere trovato StreamTitle. Non prova mai a scaricare l’intera trasmissione.

L’endpoint JSON resta consigliato quando disponibile. Se è assente o non contiene un brano, la lettura ICY viene usata automaticamente.

Per Icecast viene normalmente usato:

https://server-radio.example/status-json.xsl

Se sono presenti più mountpoint, specifica il mountpoint corretto nelle impostazioni.

Per un JSON personalizzato imposta i percorsi con notazione a punti, per esempio:

artist: now_playing.song.artist
title: now_playing.song.title
artwork: now_playing.song.art

== Ascolto continuo ==

Il popup separato è la modalità predefinita e più compatibile con temi e page builder. Il cambio pagina del sito non chiude né ricarica la finestra del player, quindi lo stream continua senza interruzioni.

La navigazione AJAX è sperimentale: aggiorna soltanto il contenuto indicato dal selettore configurato, lasciando il player attivo. Va testata attentamente con Elementor, slider, moduli, sistemi di pagamento e script caricati dalle singole pagine.

Con la barra fissa il selettore consigliato è “main”. Non impostare come area AJAX un contenitore che include il player.

== Note sulle copertine ==

La ricerca automatica dipende dalla qualità dei metadati trasmessi dalla radio. Jingle, pubblicità e titoli non standard possono non avere una copertina; in questi casi viene mostrato il logo della stazione.

Le risposte MusicBrainz vengono memorizzate in cache per limitare le richieste esterne.

== Changelog ==

= 1.2.0 =
* Aggiunta estrazione diretta dei metadati ICY dallo stream audio.
* Endpoint JSON reso facoltativo.
* Indicazione della sorgente dei metadati nel test amministrativo.

= 1.1.1 =
* Corretto il fallback del logo che impediva la ricerca automatica delle copertine.
* Aggiunto il pulsante “Verifica metadati” nella configurazione.

= 1.1.0 =
* Aggiunta modalità “solo popup” come impostazione predefinita.
* Nuovo pulsante flottante personalizzabile.
* Dimensioni della finestra popup configurabili.
* Nuovo shortcode [loffredoapps_audio_popup].

= 1.0.0 =
* Prima versione pubblica.
