Esta página explica la sintaxis de las plantillas de texto personalizadas de Symfonium y enumera los campos disponibles en cada contexto.
Está organizada en:
- Sintaxis común de las plantillas: marcadores, bloques condicionales, condiciones y operadores, formato de texto, reglas de escape y etiquetas globales localizadas
string.* - Secciones específicas de cada contexto:
- Reproduciendo ahora: funciones adicionales (
\t,\o, camposnext.y camposchapter.*) y la lista completa de campos disponibles - Subtítulo del álbum: campos de álbum disponibles en las páginas de álbumes
- Subtítulo del artista: campos de artista disponibles en las páginas de artistas
- Reproduciendo ahora: funciones adicionales (
Sintaxis común de las plantillas (disponible en todos los contextos)
Sección titulada «Sintaxis común de las plantillas (disponible en todos los contextos)»Marcadores básicos
Sección titulada «Marcadores básicos»Sintaxis: %fieldname%
- Sustituye
%fieldname%por el valor del campo - Si el campo está vacío o no existe, no muestra nada
Ejemplos:
| Plantilla | Resultado de ejemplo |
|---|---|
%title% by %artist% | Seven Nation Army by The White Stripes |
%album% (%year%) | Thriller (1982) |
%composer% ● %artist% | Ludwig van Beethoven ● Berliner Philharmoniker |
%artist%%lb%%composer% | Berliner Philharmoniker |
%lb% es un salto de línea.
Bloques condicionales
Sección titulada «Bloques condicionales»Utiliza bloques para mostrar signos de puntuación o etiquetas solo cuando exista un valor o se cumpla una condición.
Sintaxis: { ... }
- Un bloque
{ ... }solo se muestra si su primer marcador corresponde a:- un campo que no esté vacío
- o un marcador de condición verdadero (
%|condition%)
- Puedes incluir varios marcadores y texto literal en el mismo bloque
{ ... }, pero solo el primer marcador determina si se muestra - Incluye dentro del bloque los espacios necesarios, por ejemplo
{ by %artist%}
Bloque condicional basado en un campo
Sección titulada «Bloque condicional basado en un campo»Ejemplos:
| Plantilla | Resultado de ejemplo | Si el campo está vacío |
|---|---|---|
%title%{ by %artist%} | Seven Nation Army by The White Stripes | Seven Nation Army |
%album%{ (%year%)} | Thriller (1982) | Thriller |
{%composer% ● }%artist% | Beethoven ● Berliner Philharmoniker | Berliner Philharmoniker |
Bloque condicional basado en una condición
Sección titulada «Bloque condicional basado en una condición»Utiliza %|condition% como primer marcador para controlar un bloque sin mostrar ningún valor.
Ejemplo:
{%|format.samplerate>"48"% Hi-Res: %format.codec%}Muestra Hi-Res: FLAC solo si format.samplerate > 48.
Saltos de línea dentro de { ... }
Sección titulada «Saltos de línea dentro de { ... }»Utiliza \n dentro de los bloques condicionales:
%album%{\n(%year%)}Fuera de { ... }, utiliza preferentemente %lb% para insertar saltos de línea.
Condiciones dentro de marcadores
Sección titulada «Condiciones dentro de marcadores»Sintaxis: %field|condition%
Muestra el campo solo si la condición es verdadera.
Puedes compararlo con:
- Otro nombre de campo, por ejemplo
artist,composer,year - Una cadena literal o un número entre comillas, por ejemplo
"2012","Rock","256"
Notas sobre literales:
trackrepresenta el campo con ese nombre"track"representa el texto literaltrack- Las comillas pueden aparecer dentro de los valores. Asegúrate de que el literal empiece y termine con
"
Ejemplos:
%year|year>"2012"%%composer|composer!=artist%%composer|genre=="Classical"%Operadores
Sección titulada «Operadores»| Operador | Significado | Ejemplo | Notas |
|---|---|---|---|
== | es igual a | genre=="Classical" / artist==composer | |
!= | no es igual a | artist!="Metallica" | |
+= | contiene | genre+="Rock" | funciona con un literal o con otro campo |
-= | no contiene | mood-="depressing" | |
> | es mayor que | year>"1999" | utiliza comillas para los números literales |
< | es menor que | duration<"500" | la duración se expresa en segundos |
==empty | está vacío | year==empty | empty está reservado |
!=empty | no está vacío | composer!=empty | empty está reservado |
[] | está dentro del intervalo | bpm[]"0".."100" | los límites están incluidos |
Varias condiciones, mezcla de && / || y paréntesis
Sección titulada «Varias condiciones, mezcla de && / || y paréntesis»- Utiliza
&¶ el operador AND - Utiliza
||para el operador OR - Puedes combinar
&&y||en una misma condición - Utiliza paréntesis
(...)para controlar la prioridad de evaluación
Ejemplo:
%format|format.bitdepth!=empty && (format.samplerate>"48" || format.bitdepth>"24")%Esto muestra %format% solo cuando existe la profundidad de bits y, además, se cumple una de estas condiciones:
- la frecuencia de muestreo es mayor que 48
- o la profundidad de bits es mayor que 24
Sintaxis de formato de texto en línea
Sección titulada «Sintaxis de formato de texto en línea»**Bold**__Underline__~~Strike~~//Italics//^^CAPS^^Etiquetas localizadas (string.*)
Sección titulada «Etiquetas localizadas (string.*)»Estos marcadores devuelven cadenas traducidas al idioma del usuario:
string.hiresstring.losslessstring.lossystring.hires.losslessstring.low.qualitystring.high.qualitystring.high.efficiencystring.time.unit.day.shortstring.time.unit.hour.shortstring.time.unit.minute.shortstring.time.unit.second.shortstring.time.unit.day.onestring.time.unit.day.otherstring.time.unit.hour.onestring.time.unit.hour.otherstring.time.unit.minute.onestring.time.unit.minute.otherstring.time.unit.second.onestring.time.unit.second.otherstring.track.onestring.track.otherstring.album.onestring.album.other
Reproduciendo ahora (reproductores compacto y ampliado)
Sección titulada «Reproduciendo ahora (reproductores compacto y ampliado)»Las plantillas de Reproduciendo ahora pueden acceder a:
- metadatos de la pista
- estado de la reproducción
- estado de la cola
- estado de los capítulos
- formato del audio
- información del ecualizador, la salida y el renderizador
- y más
Funciones exclusivas de Reproduciendo ahora
Sección titulada «Funciones exclusivas de Reproduciendo ahora»Dividir en varios segmentos con \t
Sección titulada «Dividir en varios segmentos con \t»Utiliza \t para dividir una plantilla en varios segmentos.
Ejemplo:
%player.position%\t%format%\t%player.duration%Con una alineación horizontal que distribuya el espacio entre los segmentos, normalmente se muestran así:
- izquierda: posición
- centro: formato
- derecha: duración
Superposición de protección selectiva con \o
Sección titulada «Superposición de protección selectiva con \o»Utiliza \o para aplicar una superposición de protección solo a esa parte, aunque el texto completo no esté protegido.
Prefijo next.
Sección titulada «Prefijo next.»Añade next. delante de los campos de datos del elemento para hacer referencia al siguiente elemento de la cola:
%next.title%En los campos de capítulos, next.chapter.* hace referencia al capítulo siguiente.
Campos compatibles (Reproduciendo ahora)
Sección titulada «Campos compatibles (Reproduciendo ahora)»Metadatos de la pista y del álbum
Sección titulada «Metadatos de la pista y del álbum»titletitle.rawcleantitle(título sin el número de pista añadido ni el símbolo de contenido explícito)artistalbumalbum.rawalbum.versionalbum.type(también conocido como Tipo de álbum)albumartistalbum.tagsalbum.titlealbum.title.rawalbum.title.versioncomposeryearreleasedateoriginaldatereleasedate.yearoriginaldate.yeartrackdiscdisctitledurationduration.seconds(segundos totales)duration.d(añade .nz para ocultarlo si es cero)duration.h(añade .nz para ocultarlo si es cero)duration.m(añade .nz para ocultarlo si es cero)duration.s(añade .nz para ocultarlo si es cero)duration.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)bpmgenrestylemoodoccasiongroupinglanguagecommentworkmovement.namemovement.numbermovement.number.romanmediatypeprovidernameofflinestatusexplicitfavoriteuserratingratinguserrating.5(normalizada a cinco estrellas)rating.5(normalizada a cinco estrellas)track.tagsoriginal.artistoriginal.albumfilepathfilenamelastplayedlastSkippedisaudiobookplaycountskipcount
Reproducción y reproductor
Sección titulada «Reproducción y reproductor»player.positionplayer.durationplayer.remainingplayer.position.secondsplayer.duration.secondsplayer.remaining.secondsplayer.pausedplayer.repeat.modeplayer.shuffle.modevolume.currentsleep.timersleep.timer.secondssleep.timer.eos
Cola y funciones inteligentes
Sección titulada «Cola y funciones inteligentes»queue.positionqueue.sizequeue.namesmartqueuesmartflowradio.mode(1 si procede de la Cola inteligente; 2 o más si procede del Flujo inteligente)
Capítulos
Sección titulada «Capítulos»chapter.countchapter.indexchapter.titlechapter.positionchapter.position.secondschapter.position.d(añade .nz para ocultarlo si es cero)chapter.position.h(añade .nz para ocultarlo si es cero)chapter.position.m(añade .nz para ocultarlo si es cero)chapter.position.s(añade .nz para ocultarlo si es cero)chapter.position.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.position.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.position.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.position.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.remainingchapter.remaining.secondschapter.remaining.d(añade .nz para ocultarlo si es cero)chapter.remaining.h(añade .nz para ocultarlo si es cero)chapter.remaining.m(añade .nz para ocultarlo si es cero)chapter.remaining.s(añade .nz para ocultarlo si es cero)chapter.remaining.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.remaining.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.remaining.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.remaining.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.durationchapter.duration.secondschapter.duration.d(añade .nz para ocultarlo si es cero)chapter.duration.h(añade .nz para ocultarlo si es cero)chapter.duration.m(añade .nz para ocultarlo si es cero)chapter.duration.s(añade .nz para ocultarlo si es cero)chapter.duration.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.duration.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.duration.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.duration.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.positionchapter.all.position.secondschapter.all.position.d(añade .nz para ocultarlo si es cero)chapter.all.position.h(añade .nz para ocultarlo si es cero)chapter.all.position.m(añade .nz para ocultarlo si es cero)chapter.all.position.s(añade .nz para ocultarlo si es cero)chapter.all.position.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.position.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.position.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.position.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.remainingchapter.all.remaining.secondschapter.all.remaining.d(añade .nz para ocultarlo si es cero)chapter.all.remaining.h(añade .nz para ocultarlo si es cero)chapter.all.remaining.m(añade .nz para ocultarlo si es cero)chapter.all.remaining.s(añade .nz para ocultarlo si es cero)chapter.all.remaining.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.remaining.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.remaining.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.remaining.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.durationchapter.all.duration.secondschapter.all.duration.d(añade .nz para ocultarlo si es cero)chapter.all.duration.h(añade .nz para ocultarlo si es cero)chapter.all.duration.m(añade .nz para ocultarlo si es cero)chapter.all.duration.s(añade .nz para ocultarlo si es cero)chapter.all.duration.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.duration.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.duration.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)chapter.all.duration.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)
Formato e información de audio
Sección titulada «Formato e información de audio»formatformat.bitrateformat.bitrate.rawformat.samplerateformat.samplerate.rawformat.bitdepthformat.codecformat.bitandsampleformat.channels
Ecualizador, salida y renderizador
Sección titulada «Ecualizador, salida y renderizador»eq.profileeq.configoutput.currentrenderer.currentrenderer.type
Utilidad
Sección titulada «Utilidad»lb(salto de línea)bool1bool2bool3bool4bool5
Ejemplos de Reproduciendo ahora
Sección titulada «Ejemplos de Reproduciendo ahora»Bloque de título sencillo en dos líneas
Sección titulada «Bloque de título sencillo en dos líneas»%title%%lb%{by %artist%}Álbum y año, solo si existe el año
Sección titulada «Álbum y año, solo si existe el año»%album%{ (%year%)}Composer ● Artist, solo si existe un compositor
Sección titulada «Composer ● Artist, solo si existe un compositor»{%composer% ● }%artist%Línea de tres partes con \t (posición, formato y duración)
Sección titulada «Línea de tres partes con \t (posición, formato y duración)»%player.position%\t%format%\t%player.duration%Mostrar Hi-Res solo con una frecuencia de muestreo alta
Sección titulada «Mostrar Hi-Res solo con una frecuencia de muestreo alta»{%|format.samplerate>"48"% Hi-Res: %format.codec%}Mostrar el dispositivo de salida activo (Android u otro renderizador)
Sección titulada «Mostrar el dispositivo de salida activo (Android u otro renderizador)»{ %output.current|renderer.type=="Android"%}{ %renderer.current|renderer.type!="Android"%}Indicador de calidad de estilo Apple que se puede alternar (utiliza bool1)
Sección titulada «Indicador de calidad de estilo Apple que se puede alternar (utiliza 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"%}Si asignas una acción toggle bool1 a la plantilla de texto personalizada, alterna entre:
- mostrar
%format%cuandobool1es true - mostrar el indicador estilo Apple cuando
bool1es false
Mostrar el volumen actual
Sección titulada «Mostrar el volumen actual»Vol %volume.current%%Título del capítulo actual con su índice
Sección titulada «Título del capítulo actual con su índice»{%chapter.index% - }%chapter.title%Tiempo transcurrido y restante del capítulo actual
Sección titulada «Tiempo transcurrido y restante del capítulo actual»%chapter.position%\t%chapter.title%\t%chapter.remaining%Progreso total del audiolibro con respecto al primer capítulo
Sección titulada «Progreso total del audiolibro con respecto al primer capítulo»%chapter.all.position%\t%chapter.all.duration%Título del capítulo siguiente
Sección titulada «Título del capítulo siguiente»%next.chapter.title%Valores de formato sin procesar
Sección titulada «Valores de formato sin procesar»%format.codec% • %format.bitdepth%/%format.samplerate.raw% • %format.bitrate.raw%Subtítulo del álbum (página del álbum)
Sección titulada «Subtítulo del álbum (página del álbum)»Las páginas de álbumes suelen ofrecer metadatos del álbum, pero no el estado de la cola ni del reproductor. Puedes utilizar la misma sintaxis común de las plantillas.
Campos compatibles (subtítulo del álbum)
Sección titulada «Campos compatibles (subtítulo del álbum)»titletitle.rawversiontagstypestatuscomposerartistyeardurationduration.seconds(segundos totales)duration.d(añade .nz para ocultarlo si es cero)duration.h(añade .nz para ocultarlo si es cero)duration.m(añade .nz para ocultarlo si es cero)duration.s(añade .nz para ocultarlo si es cero)duration.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)genrestylemoodlanguageprovidernameofflinestatusoccasionmediatypegroupingexplicitreleasedateoriginaldatereleasedate.yearoriginaldate.yearlastplayedlastSkippeduserratingratinguserrating.5rating.5favoritesong.countplaycountskipcountdescriptionformatformat.bitrateformat.channelsformat.samplerateformat.bitdepthformat.codecformat.bitandsampleformat.bitrate.rawformat.samplerate.rawlb
Ejemplos de subtítulos de álbumes
Sección titulada «Ejemplos de subtítulos de álbumes»Título y versión del álbum, solo si existe la versión
Sección titulada «Título y versión del álbum, solo si existe la versión»%title%{ — %version%}Línea de año y género, omitiendo los valores que falten
Sección titulada «Línea de año y género, omitiendo los valores que falten»%year%{ • %genre%}Valoración, solo si el usuario ha valorado el álbum
Sección titulada «Valoración, solo si el usuario ha valorado el álbum»{★ %userrating.5%/5%|userrating!=empty%}Indicador Downloaded
Sección titulada «Indicador Downloaded»{⬇ Offline%|offlinestatus!=empty%}Subtítulo del artista (página del artista)
Sección titulada «Subtítulo del artista (página del artista)»Las páginas de artistas suelen ofrecer metadatos del artista y estadísticas de la biblioteca. Puedes utilizar la misma sintaxis común de las plantillas.
Campos compatibles (subtítulo del artista)
Sección titulada «Campos compatibles (subtítulo del artista)»titletitle.rawversiontagstypegenderdurationduration.seconds(segundos totales)duration.d(añade .nz para ocultarlo si es cero)duration.h(añade .nz para ocultarlo si es cero)duration.m(añade .nz para ocultarlo si es cero)duration.s(añade .nz para ocultarlo si es cero)duration.dd(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.hh(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.mm(con relleno de ceros, añade .nz para ocultarlo si es cero)duration.ss(con relleno de ceros, añade .nz para ocultarlo si es cero)genrestylemoodsong.countalbum.countinstrumentprovidernameofflinestatuslastplayeduserratinguserrating.5favoriteplaycountdescriptionlb
Ejemplos de subtítulos de artistas
Sección titulada «Ejemplos de subtítulos de artistas»Mostrar recuentos con etiquetas
Sección titulada «Mostrar recuentos con etiquetas»%song.count% songs{ • %album.count% albums}Línea de género y estilo
Sección titulada «Línea de género y estilo»%genre%{ • %style%}Mostrar la insignia Favorite solo si está marcado como favorito
Sección titulada «Mostrar la insignia Favorite solo si está marcado como favorito»{♥ Favorite%|favorite!=empty%}Instrumento en una línea nueva
Sección titulada «Instrumento en una línea nueva»%title%{\n%instrument%}