Salta ai contenuti

Modello di stringa personalizzato di Symfonium

Richiede v12.0+

Questa pagina documenta la sintassi dei modelli di stringa personalizzati di Symfonium e gli elenchi di campi disponibili in ogni contesto.

È organizzata nelle sezioni seguenti:

  • Sintassi comune dei modelli: segnaposto, blocchi condizionali, condizioni e operatori, formattazione del testo, regole di escape ed etichette globali localizzate string.*.
  • Sezioni specifiche del contesto:
    • Riproduzione in corso: funzioni aggiuntive (\t, \o, campi next. e campi chapter.*) ed elenco completo dei campi di Riproduzione in corso.
    • Sottotitolo dell’album: campi a livello di album disponibili nelle pagine degli album.
    • Sottotitolo dell’artista: campi a livello di artista disponibili nelle pagine degli artisti.

Sintassi: %fieldname%

  • Sostituisce %fieldname% con il valore del campo.
  • Se il campo è vuoto o mancante, non viene mostrato nulla.

Esempi:

ModelloRisultato di esempio
%title% by %artist%Seven Nation Army di The White Stripes
%album% (%year%)Thriller (1982)
%composer% ● %artist%Ludwig van Beethoven ● Berliner Philharmoniker
%artist%%lb%%composer%Berliner Philharmoniker

%lb% è un’interruzione di riga.


Usa i blocchi per mostrare punteggiatura o etichette solo quando esiste un valore o una condizione è soddisfatta.

Sintassi: { ... }

  • Un blocco { ... } viene mostrato solo se il primo segnaposto corrisponde:
    • a un campo non vuoto;
    • oppure a un segnaposto di condizione vera (%|condition%).
  • Puoi includere più segnaposto e testo letterale nello stesso blocco { ... }, ma solo il primo segnaposto determina se il blocco viene mostrato.
  • Inserisci gli spazi necessari all’interno del blocco, ad esempio { by %artist%}.

Esempi:

ModelloRisultato di esempioSe il campo è vuoto
%title%{ by %artist%}Seven Nation Army di The White StripesSeven Nation Army
%album%{ (%year%)}Thriller (1982)Thriller
{%composer% ● }%artist%Beethoven ● Berliner PhilharmonikerBerliner Philharmoniker

Usa %|condition% come primo segnaposto per controllare un blocco senza visualizzare un valore.

Esempio:

{%|format.samplerate>"48"% Hi-Res: %format.codec%}

Mostra Hi-Res: FLAC solo se format.samplerate > 48.

Usa \n nei blocchi condizionali:

%album%{\n(%year%)}

All’esterno di { ... }, usa preferibilmente %lb% per le interruzioni di riga.


Sintassi: %field|condition%

Mostra il campo solo se la condizione è vera.

Puoi confrontare:

  • il nome di un altro campo, ad esempio artist, composer o year;
  • una stringa o un numero letterale tra virgolette, ad esempio "2012", "Rock" o "256".

Note sui valori letterali:

  • track indica il campo track.
  • "track" indica il testo letterale track.
  • Le virgolette possono comparire nei valori. Assicurati che il valore letterale inizi e termini con ".

Esempi:

%year|year>"2012"%
%composer|composer!=artist%
%composer|genre=="Classical"%

OperatoreSignificatoEsempioNote
==uguale agenre=="Classical" / artist==composer
!=diverso daartist!="Metallica"
+=contienegenre+="Rock"funziona con un valore letterale o un altro campo
-=non contienemood-="depressing"
>maggiore diyear>"1999"usa le virgolette per i numeri letterali
<minore diduration<"500"la durata è espressa in secondi
==emptyè vuotoyear==emptyempty è riservato
!=emptynon è vuotocomposer!=emptyempty è riservato
[]nell’intervallobpm[]"0".."100"limiti inclusivi

Più condizioni, combinazioni di && / || e parentesi

Sezione intitolata “Più condizioni, combinazioni di && / || e parentesi”
  • Usa && per AND.
  • Usa || per OR.
  • Puoi combinare && e || nella stessa condizione.
  • Usa le parentesi (...) per controllare la priorità di valutazione.

Esempio:

%format|format.bitdepth!=empty && (format.samplerate>"48" || format.bitdepth>"24")%

Questo mostra %format% solo quando esiste la profondità in bit e almeno una delle condizioni seguenti è vera:

  • la frequenza di campionamento è maggiore di 48;
  • la profondità in bit è maggiore di 24.

**Bold**
__Underline__
~~Strike~~
//Italics//
^^CAPS^^

Questi segnaposto restituiscono stringhe tradotte nella lingua dell’utente:

  • string.hires
  • string.lossless
  • string.lossy
  • string.hires.lossless
  • string.low.quality
  • string.high.quality
  • string.high.efficiency
  • string.time.unit.day.short
  • string.time.unit.hour.short
  • string.time.unit.minute.short
  • string.time.unit.second.short
  • string.time.unit.day.one
  • string.time.unit.day.other
  • string.time.unit.hour.one
  • string.time.unit.hour.other
  • string.time.unit.minute.one
  • string.time.unit.minute.other
  • string.time.unit.second.one
  • string.time.unit.second.other
  • string.track.one
  • string.track.other
  • string.album.one
  • string.album.other

I modelli di Riproduzione in corso possono accedere a:

  • metadati della traccia;
  • stato della riproduzione;
  • stato della coda;
  • stato dei capitoli;
  • formato audio;
  • informazioni su EQ e renderer;
  • altri dati.

Funzioni disponibili solo in Riproduzione in corso

Sezione intitolata “Funzioni disponibili solo in Riproduzione in corso”

Usa \t per suddividere un modello in più segmenti.

Esempio:

%player.position%\t%format%\t%player.duration%

Con l’allineamento orizzontale distribuito, il risultato tipico è:

  • a sinistra: posizione;
  • al centro: formato;
  • a destra: durata.

Usa \o per applicare un overlay di protezione solo a quella parte, anche se la stringa completa non è protetta.

Aggiungi next. prima dei campi dei dati dell’elemento per fare riferimento all’elemento successivo nella coda:

%next.title%

Per i campi dei capitoli, next.chapter.* fa riferimento al capitolo successivo.


  • title
  • title.raw
  • cleantitle (titolo senza numero di traccia aggiunto né simbolo di contenuto esplicito)
  • artist
  • album
  • album.raw
  • album.version
  • album.type (noto anche come Release Type)
  • albumartist
  • album.tags
  • album.title
  • album.title.raw
  • album.title.version
  • composer
  • year
  • releasedate
  • originaldate
  • releasedate.year
  • originaldate.year
  • track
  • disc
  • disctitle
  • duration
  • duration.seconds (secondi totali)
  • duration.d (aggiungi .nz per nascondere il valore se è zero)
  • duration.h (aggiungi .nz per nascondere il valore se è zero)
  • duration.m (aggiungi .nz per nascondere il valore se è zero)
  • duration.s (aggiungi .nz per nascondere il valore se è zero)
  • duration.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • bpm
  • genre
  • style
  • mood
  • occasion
  • grouping
  • language
  • comment
  • work
  • movement.name
  • movement.number
  • movement.number.roman
  • mediatype
  • providername
  • offlinestatus
  • explicit
  • favorite
  • userrating
  • rating
  • userrating.5 (normalizzato su 5 stelle)
  • rating.5 (normalizzato su 5 stelle)
  • track.tags
  • original.artist
  • original.album
  • filepath
  • filename
  • lastplayed
  • lastSkipped
  • isaudiobook
  • playcount
  • skipcount
  • player.position
  • player.duration
  • player.remaining
  • player.position.seconds
  • player.duration.seconds
  • player.remaining.seconds
  • player.paused
  • player.repeat.mode
  • player.shuffle.mode
  • volume.current
  • sleep.timer
  • sleep.timer.seconds
  • sleep.timer.eos
  • queue.position
  • queue.size
  • queue.name
  • smartqueue
  • smartflow
  • radio.mode (1 se proviene da Coda smart, 2 o più se proviene da Smart Flow)
  • chapter.count
  • chapter.index
  • chapter.title
  • chapter.position
  • chapter.position.seconds
  • chapter.position.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.position.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.position.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.position.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.position.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.position.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.position.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.position.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.remaining
  • chapter.remaining.seconds
  • chapter.remaining.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.remaining.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.remaining.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.remaining.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.remaining.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.remaining.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.remaining.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.remaining.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.duration
  • chapter.duration.seconds
  • chapter.duration.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.duration.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.duration.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.duration.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.duration.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.duration.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.duration.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.duration.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.position
  • chapter.all.position.seconds
  • chapter.all.position.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.position.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.position.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.position.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.position.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.position.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.position.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.position.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.remaining
  • chapter.all.remaining.seconds
  • chapter.all.remaining.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.remaining.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.remaining.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.remaining.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.remaining.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.remaining.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.remaining.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.remaining.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.duration
  • chapter.all.duration.seconds
  • chapter.all.duration.d (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.duration.h (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.duration.m (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.duration.s (aggiungi .nz per nascondere il valore se è zero)
  • chapter.all.duration.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.duration.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.duration.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • chapter.all.duration.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • format
  • format.bitrate
  • format.bitrate.raw
  • format.samplerate
  • format.samplerate.raw
  • format.bitdepth
  • format.codec
  • format.bitandsample
  • format.channels
  • eq.profile
  • eq.config
  • output.current
  • renderer.current
  • renderer.type
  • lb (interruzione di riga)
  • bool1
  • bool2
  • bool3
  • bool4
  • bool5

%title%%lb%{by %artist%}
%album%{ (%year%)}

Composer ● Artist solo quando esiste il compositore

Sezione intitolata “Composer ● Artist solo quando esiste il compositore”
{%composer% ● }%artist%

Riga in tre parti con \t (posizione / formato / durata)

Sezione intitolata “Riga in tre parti con \t (posizione / formato / durata)”
%player.position%\t%format%\t%player.duration%

Mostrare Hi-Res solo con una frequenza di campionamento elevata

Sezione intitolata “Mostrare Hi-Res solo con una frequenza di campionamento elevata”
{%|format.samplerate>"48"% Hi-Res: %format.codec%}

Mostrare il dispositivo di uscita attivo (Android o altro renderer)

Sezione intitolata “Mostrare il dispositivo di uscita attivo (Android o altro renderer)”
{ %output.current|renderer.type=="Android"%}{ %renderer.current|renderer.type!="Android"%}

Indicatore di qualità in stile Apple attivabile e disattivabile (usa bool1)

Sezione intitolata “Indicatore di qualità in stile Apple attivabile e disattivabile (usa bool1)”
ⓘ {%format|bool1=="true"%}{Dolby Atmos %|format.channels>"2" && bool1=="false"%}{%string.high.efficiency|format.bitrate>"10" && format.bitrate<"256" && format.bitdepth==empty && bool1=="false"%}{%string.high.quality|format.bitrate>"255" && format.bitrate<"321" && format.bitdepth==empty && bool1=="false"%}{%string.lossless|format.bitdepth[]"16".."24" && format.samplerate<"49" && bool1=="false"%}{%string.hires.lossless|format.bitdepth[]"16".."32" && format.samplerate>"48" && bool1=="false"%}

Se associ un’azione toggle bool1 alla stringa personalizzata, questa alterna tra:

  • la visualizzazione di %format% quando bool1 è true;
  • la visualizzazione dell’indicatore in stile Apple quando bool1 è false.
Vol %volume.current%%
{%chapter.index% - }%chapter.title%
%chapter.position%\t%chapter.title%\t%chapter.remaining%

Avanzamento completo dell’audiolibro rispetto al primo capitolo

Sezione intitolata “Avanzamento completo dell’audiolibro rispetto al primo capitolo”
%chapter.all.position%\t%chapter.all.duration%
%next.chapter.title%
%format.codec% • %format.bitdepth%/%format.samplerate.raw% • %format.bitrate.raw%

Le pagine degli album espongono normalmente metadati a livello di album, non lo stato della coda o del player. Puoi usare la stessa sintassi comune dei modelli.

  • title
  • title.raw
  • version
  • tags
  • type
  • status
  • composer
  • artist
  • year
  • duration
  • duration.seconds (secondi totali)
  • duration.d (aggiungi .nz per nascondere il valore se è zero)
  • duration.h (aggiungi .nz per nascondere il valore se è zero)
  • duration.m (aggiungi .nz per nascondere il valore se è zero)
  • duration.s (aggiungi .nz per nascondere il valore se è zero)
  • duration.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • genre
  • style
  • mood
  • language
  • providername
  • offlinestatus
  • occasion
  • mediatype
  • grouping
  • explicit
  • releasedate
  • originaldate
  • releasedate.year
  • originaldate.year
  • lastplayed
  • lastSkipped
  • userrating
  • rating
  • userrating.5
  • rating.5
  • favorite
  • song.count
  • playcount
  • skipcount
  • description
  • format
  • format.bitrate
  • format.channels
  • format.samplerate
  • format.bitdepth
  • format.codec
  • format.bitandsample
  • format.bitrate.raw
  • format.samplerate.raw
  • lb

Titolo dell’album e versione solo se la versione esiste

Sezione intitolata “Titolo dell’album e versione solo se la versione esiste”
%title%{ — %version%}

Riga con anno e genere che omette le parti mancanti

Sezione intitolata “Riga con anno e genere che omette le parti mancanti”
%year%{ • %genre%}

Valutazione mostrata solo se l’utente ha assegnato un voto

Sezione intitolata “Valutazione mostrata solo se l’utente ha assegnato un voto”
{★ %userrating.5%/5%|userrating!=empty%}
{⬇ Offline%|offlinestatus!=empty%}

Le pagine degli artisti espongono normalmente metadati a livello di artista e statistiche della libreria. Puoi usare la stessa sintassi comune dei modelli.

  • title
  • title.raw
  • version
  • tags
  • type
  • gender
  • duration
  • duration.seconds (secondi totali)
  • duration.d (aggiungi .nz per nascondere il valore se è zero)
  • duration.h (aggiungi .nz per nascondere il valore se è zero)
  • duration.m (aggiungi .nz per nascondere il valore se è zero)
  • duration.s (aggiungi .nz per nascondere il valore se è zero)
  • duration.dd (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.hh (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.mm (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • duration.ss (completato con zeri; aggiungi .nz per nasconderlo se è zero)
  • genre
  • style
  • mood
  • song.count
  • album.count
  • instrument
  • providername
  • offlinestatus
  • lastplayed
  • userrating
  • userrating.5
  • favorite
  • playcount
  • description
  • lb
%song.count% songs{ • %album.count% albums}
%genre%{ • %style%}
{♥ Favorite%|favorite!=empty%}
%title%{\n%instrument%}