Pular para o conteúdo

Modelo de string personalizada do Symfonium

Requer v12.0+

Esta página documenta a sintaxe dos modelos de string personalizada do Symfonium e as listas de campos disponíveis em cada contexto.

Ela está organizada em:

  • Sintaxe comum dos modelos: placeholders, blocos condicionais, condições/operadores, formatação de texto, regras de escape e rótulos globais localizados string.*
  • Seções específicas por contexto:
    • Em reprodução: recursos adicionais (\t, \o, campos next., campos chapter.*) e a lista completa de campos de Em reprodução
    • Subtítulo de álbum: campos de nível de álbum disponíveis nas páginas de álbum
    • Subtítulo de artista: campos de nível de artista disponíveis nas páginas de artista

Sintaxe comum dos modelos (funciona em todos os lugares)

Seção intitulada “Sintaxe comum dos modelos (funciona em todos os lugares)”

Sintaxe: %fieldname%

  • Substitui %fieldname% pelo valor do campo
  • Se o campo estiver vazio ou ausente, nada é exibido

Exemplos:

ModeloResultado de exemplo
%title% por %artist%Seven Nation Army por The White Stripes
%album% (%year%)Thriller (1982)
%composer% ● %artist%Ludwig van Beethoven ● Berliner Philharmoniker
%artist%%lb%%composer%Berliner Philharmoniker

%lb% é uma quebra de linha.


Use blocos para mostrar pontuação ou rótulos somente quando algo existir ou quando uma condição corresponder.

Sintaxe: { ... }

  • Um bloco { ... } é exibido somente se seu primeiro placeholder corresponder:
    • a um campo não vazio
    • ou a um placeholder de condição verdadeira (%|condition%)
  • Você pode incluir vários placeholders e texto literal no mesmo bloco { ... }, mas somente o primeiro placeholder controla se o bloco é exibido
  • Coloque os espaços necessários dentro do bloco, por exemplo { por %artist%}

Exemplos:

ModeloResultado de exemploSe o campo estiver vazio
%title%{ por %artist%}Seven Nation Army por The White StripesSeven Nation Army
%album%{ (%year%)}Thriller (1982)Thriller
{%composer% ● }%artist%Beethoven ● Berliner PhilharmonikerBerliner Philharmoniker

Use %|condition% como primeiro placeholder para controlar um bloco sem imprimir um valor.

Exemplo:

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

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

Use \n dentro de blocos condicionais:

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

Fora de { ... }, prefira %lb% para quebras de linha.


Sintaxe: %field|condition%

Imprime o campo somente se a condição for verdadeira.

O que você pode comparar:

  • Outro nome de campo, por exemplo artist, composer, year
  • Uma string ou número literal entre aspas, por exemplo "2012", "Rock", "256"

Observações sobre literais:

  • track significa o campo track
  • "track" significa o texto literal track
  • Aspas podem aparecer dentro de valores. Verifique se o literal começa e termina com "

Exemplos:

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

OperadorSignificadoExemploObservações
==igual agenre=="Classical" / artist==composer
!=diferente deartist!="Metallica"
+=contémgenre+="Rock"funciona com um literal ou outro campo
-=não contémmood-="depressing"
>maior queyear>"1999"use aspas para números literais
<menor queduration<"500"a duração está em segundos
==emptyestá vazioyear==emptyempty é reservado
!=emptynão está vaziocomposer!=emptyempty é reservado
[]no intervalobpm[]"0".."100"limites inclusivos

Múltiplas condições, mistura de && / || e parênteses

Seção intitulada “Múltiplas condições, mistura de && / || e parênteses”
  • Use && para E
  • Use || para OU
  • Você pode misturar && e || na mesma condição
  • Use parênteses (...) para controlar a prioridade de avaliação

Exemplo:

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

Isso imprime %format% somente quando a profundidade de bits existe e:

  • a taxa de amostragem é maior que 48
  • a profundidade de bits é maior que 24

**Negrito**
__Sublinhado__
~~Tachado~~
//Itálico//
^^MAIÚSCULAS^^

Esses placeholders retornam strings traduzidas no idioma do usuário:

  • 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

Os modelos de Em reprodução podem acessar:

  • metadados da faixa
  • estado de reprodução
  • estado da fila
  • estado do capítulo
  • formato de áudio
  • informações de equalizador / renderizador
  • e mais

Use \t para dividir um modelo em vários segmentos.

Exemplo:

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

Com espaço de alinhamento horizontal entre eles, isso normalmente é renderizado como:

  • esquerda: posição
  • centro: formato
  • direita: duração

Use \o para aplicar uma sobreposição de proteção somente a essa parte, mesmo que a string completa não esteja protegida.

Adicione next. antes dos campos de dados do item para se referir ao próximo item da fila:

%next.title%

Para campos de capítulo, next.chapter.* se refere ao próximo capítulo.


  • title
  • title.raw
  • cleantitle (título sem número de faixa adicionado nem símbolo de explícito)
  • artist
  • album
  • album.raw
  • album.version
  • album.type (também conhecido como 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 (segundos totais)
  • duration.d (adicione .nz para ocultar se for zero)
  • duration.h (adicione .nz para ocultar se for zero)
  • duration.m (adicione .nz para ocultar se for zero)
  • duration.s (adicione .nz para ocultar se for zero)
  • duration.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.ss (preenchido com 0, adicione .nz para ocultar se for 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 (normalizado para 5 estrelas)
  • rating.5 (normalizado para 5 estrelas)
  • 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 vier de Smart Queue, 2+ se vier de Smart Flow)
  • chapter.count
  • chapter.index
  • chapter.title
  • chapter.position
  • chapter.position.seconds
  • chapter.position.d (adicione .nz para ocultar se for zero)
  • chapter.position.h (adicione .nz para ocultar se for zero)
  • chapter.position.m (adicione .nz para ocultar se for zero)
  • chapter.position.s (adicione .nz para ocultar se for zero)
  • chapter.position.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.position.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.position.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.position.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.remaining
  • chapter.remaining.seconds
  • chapter.remaining.d (adicione .nz para ocultar se for zero)
  • chapter.remaining.h (adicione .nz para ocultar se for zero)
  • chapter.remaining.m (adicione .nz para ocultar se for zero)
  • chapter.remaining.s (adicione .nz para ocultar se for zero)
  • chapter.remaining.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.remaining.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.remaining.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.remaining.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.duration
  • chapter.duration.seconds
  • chapter.duration.d (adicione .nz para ocultar se for zero)
  • chapter.duration.h (adicione .nz para ocultar se for zero)
  • chapter.duration.m (adicione .nz para ocultar se for zero)
  • chapter.duration.s (adicione .nz para ocultar se for zero)
  • chapter.duration.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.duration.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.duration.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.duration.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.position
  • chapter.all.position.seconds
  • chapter.all.position.d (adicione .nz para ocultar se for zero)
  • chapter.all.position.h (adicione .nz para ocultar se for zero)
  • chapter.all.position.m (adicione .nz para ocultar se for zero)
  • chapter.all.position.s (adicione .nz para ocultar se for zero)
  • chapter.all.position.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.position.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.position.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.position.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.remaining
  • chapter.all.remaining.seconds
  • chapter.all.remaining.d (adicione .nz para ocultar se for zero)
  • chapter.all.remaining.h (adicione .nz para ocultar se for zero)
  • chapter.all.remaining.m (adicione .nz para ocultar se for zero)
  • chapter.all.remaining.s (adicione .nz para ocultar se for zero)
  • chapter.all.remaining.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.remaining.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.remaining.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.remaining.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.duration
  • chapter.all.duration.seconds
  • chapter.all.duration.d (adicione .nz para ocultar se for zero)
  • chapter.all.duration.h (adicione .nz para ocultar se for zero)
  • chapter.all.duration.m (adicione .nz para ocultar se for zero)
  • chapter.all.duration.s (adicione .nz para ocultar se for zero)
  • chapter.all.duration.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.duration.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.duration.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • chapter.all.duration.ss (preenchido com 0, adicione .nz para ocultar se for 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 (quebra de linha)
  • bool1
  • bool2
  • bool3
  • bool4
  • bool5

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

Compositor ● Artista somente quando o compositor existir

Seção intitulada “Compositor ● Artista somente quando o compositor existir”
{%composer% ● }%artist%

linha em três partes usando \t (posição / formato / duração)

Seção intitulada “linha em três partes usando \t (posição / formato / duração)”
%player.position%\t%format%\t%player.duration%

mostrar Hi-Res somente para alta taxa de amostragem

Seção intitulada “mostrar Hi-Res somente para alta taxa de amostragem”
{%|format.samplerate>"48"% Hi-Res: %format.codec%}

mostrar dispositivo de saída ativo (Android ou outro renderizador)

Seção intitulada “mostrar dispositivo de saída ativo (Android ou outro renderizador)”
{ %output.current|renderer.type=="Android"%}{ %renderer.current|renderer.type!="Android"%}

indicador de qualidade no estilo Apple alternável (usa bool1)

Seção intitulada “indicador de qualidade no estilo Apple alternável (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 você vincular uma ação toggle bool1 à string personalizada, ela alterna entre:

  • mostrar %format% quando bool1 for true
  • mostrar o indicador no estilo Apple quando bool1 for false
Vol. %volume.current%%
{%chapter.index% - }%chapter.title%
%chapter.position%\t%chapter.title%\t%chapter.remaining%

progresso completo do audiolivro relativo ao primeiro capítulo

Seção intitulada “progresso completo do audiolivro relativo ao primeiro capítulo”
%chapter.all.position%\t%chapter.all.duration%
%next.chapter.title%
%format.codec% • %format.bitdepth%/%format.samplerate.raw% • %format.bitrate.raw%

Páginas de álbum normalmente expõem metadados de nível de álbum, não o estado da fila ou do player. Você pode usar a mesma sintaxe comum de modelos.

  • title
  • title.raw
  • version
  • tags
  • type
  • status
  • composer
  • artist
  • year
  • duration
  • duration.seconds (segundos totais)
  • duration.d (adicione .nz para ocultar se for zero)
  • duration.h (adicione .nz para ocultar se for zero)
  • duration.m (adicione .nz para ocultar se for zero)
  • duration.s (adicione .nz para ocultar se for zero)
  • duration.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.ss (preenchido com 0, adicione .nz para ocultar se for 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

título do álbum + versão somente se a versão existir

Seção intitulada “título do álbum + versão somente se a versão existir”
%title%{ — %version%}
%year%{ • %genre%}
{★ %userrating.5%/5%|userrating!=empty%}
{⬇ Offline%|offlinestatus!=empty%}

Páginas de artista normalmente expõem metadados de nível de artista e estatísticas da biblioteca. Você pode usar a mesma sintaxe comum de modelos.

  • title
  • title.raw
  • version
  • tags
  • type
  • gender
  • duration
  • duration.seconds (segundos totais)
  • duration.d (adicione .nz para ocultar se for zero)
  • duration.h (adicione .nz para ocultar se for zero)
  • duration.m (adicione .nz para ocultar se for zero)
  • duration.s (adicione .nz para ocultar se for zero)
  • duration.dd (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.hh (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.mm (preenchido com 0, adicione .nz para ocultar se for zero)
  • duration.ss (preenchido com 0, adicione .nz para ocultar se for zero)
  • genre
  • style
  • mood
  • song.count
  • album.count
  • instrument
  • providername
  • offlinestatus
  • lastplayed
  • userrating
  • userrating.5
  • favorite
  • playcount
  • description
  • lb
%song.count% músicas{ • %album.count% álbuns}
%genre%{ • %style%}

mostrar o selo Favorito somente quando for favorito

Seção intitulada “mostrar o selo Favorito somente quando for favorito”
{♥ Favorito%|favorite!=empty%}
%title%{\n%instrument%}