Diese Seite dokumentiert die Syntax der Symfonium-Vorlagen für benutzerdefinierte Zeichenfolgen und die Feldlisten, die in den jeweiligen Kontexten verfügbar sind.
Sie ist folgendermaßen aufgebaut:
- Allgemeine Vorlagensyntax: Platzhalter, bedingte Blöcke, Bedingungen/Operatoren, Textformatierung, Escape-Regeln und globale lokalisierte
string.*-Labels - Kontextspezifische Abschnitte:
- Aktuelle Wiedergabe: zusätzliche Funktionen (
\t,\o,next.-Felder,chapter.*-Felder) sowie die vollständige Feldliste für die aktuelle Wiedergabe - Album-Untertitel: albumbezogene Felder, die auf Albumseiten verfügbar sind
- Künstler-Untertitel: künstlerbezogene Felder, die auf Künstlerseiten verfügbar sind
- Aktuelle Wiedergabe: zusätzliche Funktionen (
Allgemeine Vorlagensyntax (funktioniert überall)
Abschnitt betitelt „Allgemeine Vorlagensyntax (funktioniert überall)“Grundlegende Platzhalter
Abschnitt betitelt „Grundlegende Platzhalter“Syntax: %fieldname%
- Ersetzt
%fieldname%durch den Feldwert - Wenn das Feld leer ist oder fehlt, wird nichts angezeigt
Beispiele:
| Vorlage | Beispielergebnis |
|---|---|
%title% von %artist% | Seven Nation Army von The White Stripes |
%album% (%year%) | Thriller (1982) |
%composer% ● %artist% | Ludwig van Beethoven ● Berliner Philharmoniker |
%artist%%lb%%composer% | Berliner Philharmoniker |
%lb% ist ein Zeilenumbruch.
Bedingte Blöcke
Abschnitt betitelt „Bedingte Blöcke“Verwenden Sie Blöcke, um Satzzeichen oder Labels nur anzuzeigen, wenn etwas vorhanden ist oder eine Bedingung zutrifft.
Syntax: { ... }
- Ein
{ ... }-Block wird nur angezeigt, wenn sein erster Platzhalter zutrifft:- entweder auf ein nicht leeres Feld
- oder auf einen wahren Bedingungsplatzhalter (
%|condition%)
- Sie können mehrere Platzhalter und Literaltext im selben
{ ... }-Block verwenden, aber nur der erste Platzhalter steuert, ob der Block angezeigt wird - Setzen Sie benötigte Leerzeichen in den Block, zum Beispiel
{ von %artist%}
Bedingter Block auf Basis eines Feldes
Abschnitt betitelt „Bedingter Block auf Basis eines Feldes“Beispiele:
| Vorlage | Beispielergebnis | Wenn das Feld leer ist |
|---|---|---|
%title%{ von %artist%} | Seven Nation Army von The White Stripes | Seven Nation Army |
%album%{ (%year%)} | Thriller (1982) | Thriller |
{%composer% ● }%artist% | Beethoven ● Berliner Philharmoniker | Berliner Philharmoniker |
Bedingter Block auf Basis einer Bedingung
Abschnitt betitelt „Bedingter Block auf Basis einer Bedingung“Verwenden Sie %|condition% als ersten Platzhalter, um einen Block zu steuern, ohne einen Wert auszugeben.
Beispiel:
{%|format.samplerate>"48"% Hi-Res: %format.codec%}Zeigt Hi-Res: FLAC nur an, wenn format.samplerate > 48 gilt.
Zeilenumbrüche innerhalb von { ... }
Abschnitt betitelt „Zeilenumbrüche innerhalb von { ... }“Verwenden Sie \n innerhalb bedingter Blöcke:
%album%{\n(%year%)}Außerhalb von { ... } sollten Sie %lb% für Zeilenumbrüche verwenden.
Bedingungen innerhalb von Platzhaltern
Abschnitt betitelt „Bedingungen innerhalb von Platzhaltern“Syntax: %field|condition%
Gibt das Feld nur aus, wenn die Bedingung wahr ist.
Was Sie vergleichen können:
- Einen anderen Feldnamen, zum Beispiel
artist,composer,year - Eine Literalzeichenfolge oder Zahl in Anführungszeichen, zum Beispiel
"2012","Rock","256"
Hinweise zu Literalen:
trackbezeichnet das Feld track"track"bezeichnet den Literaltexttrack- Anführungszeichen können in Werten vorkommen. Stellen Sie sicher, dass das Literal mit
"beginnt und endet
Beispiele:
%year|year>"2012"%%composer|composer!=artist%%composer|genre=="Classical"%Operatoren
Abschnitt betitelt „Operatoren“| Operator | Bedeutung | Beispiel | Hinweise |
|---|---|---|---|
== | ist gleich | genre=="Classical" / artist==composer | |
!= | ist ungleich | artist!="Metallica" | |
+= | enthält | genre+="Rock" | funktioniert mit einem Literal oder einem anderen Feld |
-= | enthält nicht | mood-="depressing" | |
> | größer als | year>"1999" | verwenden Sie Anführungszeichen für Literalzahlen |
< | kleiner als | duration<"500" | Dauer in Sekunden |
==empty | ist leer | year==empty | empty ist reserviert |
!=empty | ist nicht leer | composer!=empty | empty ist reserviert |
[] | im Bereich | bpm[]"0".."100" | inklusive Grenzen |
Mehrere Bedingungen, gemischte && / || und Klammern
Abschnitt betitelt „Mehrere Bedingungen, gemischte && / || und Klammern“- Verwenden Sie
&&für UND - Verwenden Sie
||für ODER - Sie können
&&und||in derselben Bedingung kombinieren - Verwenden Sie Klammern
(...), um die Auswertungspriorität zu steuern
Beispiel:
%format|format.bitdepth!=empty && (format.samplerate>"48" || format.bitdepth>"24")%Dies gibt %format% nur aus, wenn die Bittiefe vorhanden ist und entweder:
- die Abtastrate größer als 48 ist
- die Bittiefe größer als 24 ist
Inline-Markup für Textformatierung
Abschnitt betitelt „Inline-Markup für Textformatierung“**Fett**__Unterstrichen__~~Durchgestrichen~~//Kursiv//^^GROSSBUCHSTABEN^^Lokalisierte Labels (string.*)
Abschnitt betitelt „Lokalisierte Labels (string.*)“Diese Platzhalter geben übersetzte Zeichenfolgen in der Sprache des Benutzers zurück:
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
Aktuelle Wiedergabe (kompakt & erweitert)
Abschnitt betitelt „Aktuelle Wiedergabe (kompakt & erweitert)“Vorlagen für die aktuelle Wiedergabe können auf Folgendes zugreifen:
- Titel-Metadaten
- Wiedergabestatus
- Warteschlangenstatus
- Kapitelstatus
- Audioformat
- EQ- / Renderer-Informationen
- und mehr
Funktionen nur für die aktuelle Wiedergabe
Abschnitt betitelt „Funktionen nur für die aktuelle Wiedergabe“Mit \t in mehrere Segmente aufteilen
Abschnitt betitelt „Mit \t in mehrere Segmente aufteilen“Verwenden Sie \t, um eine Vorlage in mehrere Segmente aufzuteilen.
Beispiel:
%player.position%\t%format%\t%player.duration%Mit horizontalem Ausrichtungsabstand dazwischen wird dies normalerweise so angezeigt:
- links: Position
- Mitte: Format
- rechts: Dauer
Selektive Schutzüberlagerung mit \o
Abschnitt betitelt „Selektive Schutzüberlagerung mit \o“Verwenden Sie \o, um eine Schutzüberlagerung nur auf diesen Teil anzuwenden, auch wenn die gesamte Zeichenfolge nicht geschützt ist.
Präfix next.
Abschnitt betitelt „Präfix next.“Fügen Sie next. vor Elementdatenfelder ein, um auf das nächste Warteschlangenelement zu verweisen:
%next.title%Bei Kapitelfeldern verweist next.chapter.* auf das nächste Kapitel.
Unterstützte Felder (aktuelle Wiedergabe)
Abschnitt betitelt „Unterstützte Felder (aktuelle Wiedergabe)“Titel- / Album-Metadaten
Abschnitt betitelt „Titel- / Album-Metadaten“titletitle.rawcleantitle(Titel ohne hinzugefügte Titelnummer oder Explicit-Symbol)artistalbumalbum.rawalbum.versionalbum.type(auch als Release Type bekannt)albumartistalbum.tagsalbum.titlealbum.title.rawalbum.title.versioncomposeryearreleasedateoriginaldatereleasedate.yearoriginaldate.yeartrackdiscdisctitledurationduration.seconds(Sekunden insgesamt)duration.d(.nz hinzufügen, um bei null auszublenden)duration.h(.nz hinzufügen, um bei null auszublenden)duration.m(.nz hinzufügen, um bei null auszublenden)duration.s(.nz hinzufügen, um bei null auszublenden)duration.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)bpmgenrestylemoodoccasiongroupinglanguagecommentworkmovement.namemovement.numbermovement.number.romanmediatypeprovidernameofflinestatusexplicitfavoriteuserratingratinguserrating.5(auf 5 Sterne normalisiert)rating.5(auf 5 Sterne normalisiert)track.tagsoriginal.artistoriginal.albumfilepathfilenamelastplayedlastSkippedisaudiobookplaycountskipcount
Wiedergabe / Player
Abschnitt betitelt „Wiedergabe / Player“player.positionplayer.durationplayer.remainingplayer.position.secondsplayer.duration.secondsplayer.remaining.secondsplayer.pausedplayer.repeat.modeplayer.shuffle.modevolume.currentsleep.timersleep.timer.secondssleep.timer.eos
Warteschlange / intelligente Funktionen
Abschnitt betitelt „Warteschlange / intelligente Funktionen“queue.positionqueue.sizequeue.namesmartqueuesmartflowradio.mode(1 bei Smart Queue, 2+ bei Smart Flow)
Kapitel
Abschnitt betitelt „Kapitel“chapter.countchapter.indexchapter.titlechapter.positionchapter.position.secondschapter.position.d(.nz hinzufügen, um bei null auszublenden)chapter.position.h(.nz hinzufügen, um bei null auszublenden)chapter.position.m(.nz hinzufügen, um bei null auszublenden)chapter.position.s(.nz hinzufügen, um bei null auszublenden)chapter.position.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.position.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.position.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.position.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.remainingchapter.remaining.secondschapter.remaining.d(.nz hinzufügen, um bei null auszublenden)chapter.remaining.h(.nz hinzufügen, um bei null auszublenden)chapter.remaining.m(.nz hinzufügen, um bei null auszublenden)chapter.remaining.s(.nz hinzufügen, um bei null auszublenden)chapter.remaining.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.remaining.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.remaining.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.remaining.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.durationchapter.duration.secondschapter.duration.d(.nz hinzufügen, um bei null auszublenden)chapter.duration.h(.nz hinzufügen, um bei null auszublenden)chapter.duration.m(.nz hinzufügen, um bei null auszublenden)chapter.duration.s(.nz hinzufügen, um bei null auszublenden)chapter.duration.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.duration.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.duration.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.duration.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.positionchapter.all.position.secondschapter.all.position.d(.nz hinzufügen, um bei null auszublenden)chapter.all.position.h(.nz hinzufügen, um bei null auszublenden)chapter.all.position.m(.nz hinzufügen, um bei null auszublenden)chapter.all.position.s(.nz hinzufügen, um bei null auszublenden)chapter.all.position.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.position.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.position.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.position.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.remainingchapter.all.remaining.secondschapter.all.remaining.d(.nz hinzufügen, um bei null auszublenden)chapter.all.remaining.h(.nz hinzufügen, um bei null auszublenden)chapter.all.remaining.m(.nz hinzufügen, um bei null auszublenden)chapter.all.remaining.s(.nz hinzufügen, um bei null auszublenden)chapter.all.remaining.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.remaining.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.remaining.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.remaining.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.durationchapter.all.duration.secondschapter.all.duration.d(.nz hinzufügen, um bei null auszublenden)chapter.all.duration.h(.nz hinzufügen, um bei null auszublenden)chapter.all.duration.m(.nz hinzufügen, um bei null auszublenden)chapter.all.duration.s(.nz hinzufügen, um bei null auszublenden)chapter.all.duration.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.duration.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.duration.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)chapter.all.duration.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)
Format- / Audioinformationen
Abschnitt betitelt „Format- / Audioinformationen“formatformat.bitrateformat.bitrate.rawformat.samplerateformat.samplerate.rawformat.bitdepthformat.codecformat.bitandsampleformat.channels
EQ / Ausgabe / Renderer
Abschnitt betitelt „EQ / Ausgabe / Renderer“eq.profileeq.configoutput.currentrenderer.currentrenderer.type
Hilfsfelder
Abschnitt betitelt „Hilfsfelder“lb(Zeilenumbruch)bool1bool2bool3bool4bool5
Beispiele für die aktuelle Wiedergabe
Abschnitt betitelt „Beispiele für die aktuelle Wiedergabe“übersichtlicher zweizeiliger Titelblock
Abschnitt betitelt „übersichtlicher zweizeiliger Titelblock“%title%%lb%{von %artist%}Album + Jahr nur, wenn das Jahr vorhanden ist
Abschnitt betitelt „Album + Jahr nur, wenn das Jahr vorhanden ist“%album%{ (%year%)}Komponist ● Künstler nur, wenn der Komponist vorhanden ist
Abschnitt betitelt „Komponist ● Künstler nur, wenn der Komponist vorhanden ist“{%composer% ● }%artist%dreiteilige Zeile mit \t (Position / Format / Dauer)
Abschnitt betitelt „dreiteilige Zeile mit \t (Position / Format / Dauer)“%player.position%\t%format%\t%player.duration%Hi-Res nur bei hoher Abtastrate anzeigen
Abschnitt betitelt „Hi-Res nur bei hoher Abtastrate anzeigen“{%|format.samplerate>"48"% Hi-Res: %format.codec%}aktives Ausgabegerät anzeigen (Android oder anderer Renderer)
Abschnitt betitelt „aktives Ausgabegerät anzeigen (Android oder anderer Renderer)“{ %output.current|renderer.type=="Android"%}{ %renderer.current|renderer.type!="Android"%}umschaltbarer Qualitätsindikator im Apple-Stil (verwendet bool1)
Abschnitt betitelt „umschaltbarer Qualitätsindikator im Apple-Stil (verwendet 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"%}Wenn Sie eine Aktion toggle bool1 an die benutzerdefinierte Zeichenfolge binden, wechselt sie zwischen:
- Anzeige von
%format%, wennbool1true ist - Anzeige des Indikators im Apple-Stil, wenn
bool1false ist
aktuelle Lautstärke anzeigen
Abschnitt betitelt „aktuelle Lautstärke anzeigen“Lautstärke %volume.current%%aktueller Kapiteltitel mit Index
Abschnitt betitelt „aktueller Kapiteltitel mit Index“{%chapter.index% - }%chapter.title%aktuelles Kapitel: verstrichen / verbleibend
Abschnitt betitelt „aktuelles Kapitel: verstrichen / verbleibend“%chapter.position%\t%chapter.title%\t%chapter.remaining%vollständiger Hörbuchfortschritt relativ zum ersten Kapitel
Abschnitt betitelt „vollständiger Hörbuchfortschritt relativ zum ersten Kapitel“%chapter.all.position%\t%chapter.all.duration%Titel des nächsten Kapitels
Abschnitt betitelt „Titel des nächsten Kapitels“%next.chapter.title%rohe Formatwerte
Abschnitt betitelt „rohe Formatwerte“%format.codec% • %format.bitdepth%/%format.samplerate.raw% • %format.bitrate.raw%Album-Untertitel (Albumseite)
Abschnitt betitelt „Album-Untertitel (Albumseite)“Albumseiten stellen in der Regel albumbezogene Metadaten bereit, nicht den Warteschlangen- oder Playerstatus. Sie können dieselbe allgemeine Vorlagensyntax verwenden.
Unterstützte Felder (Album-Untertitel)
Abschnitt betitelt „Unterstützte Felder (Album-Untertitel)“titletitle.rawversiontagstypestatuscomposerartistyeardurationduration.seconds(Sekunden insgesamt)duration.d(.nz hinzufügen, um bei null auszublenden)duration.h(.nz hinzufügen, um bei null auszublenden)duration.m(.nz hinzufügen, um bei null auszublenden)duration.s(.nz hinzufügen, um bei null auszublenden)duration.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)genrestylemoodlanguageprovidernameofflinestatusoccasionmediatypegroupingexplicitreleasedateoriginaldatereleasedate.yearoriginaldate.yearlastplayedlastSkippeduserratingratinguserrating.5rating.5favoritesong.countplaycountskipcountdescriptionformatformat.bitrateformat.channelsformat.samplerateformat.bitdepthformat.codecformat.bitandsampleformat.bitrate.rawformat.samplerate.rawlb
Beispiele für Album-Untertitel
Abschnitt betitelt „Beispiele für Album-Untertitel“Albumtitel + Version nur, wenn die Version vorhanden ist
Abschnitt betitelt „Albumtitel + Version nur, wenn die Version vorhanden ist“%title%{ — %version%}Zeile mit Jahr + Genre, fehlende Teile werden übersprungen
Abschnitt betitelt „Zeile mit Jahr + Genre, fehlende Teile werden übersprungen“%year%{ • %genre%}Bewertung nur anzeigen, wenn der Benutzer bewertet hat
Abschnitt betitelt „Bewertung nur anzeigen, wenn der Benutzer bewertet hat“{★ %userrating.5%/5%|userrating!=empty%}Indikator Heruntergeladen
Abschnitt betitelt „Indikator Heruntergeladen“{⬇ Offline%|offlinestatus!=empty%}Künstler-Untertitel (Künstlerseite)
Abschnitt betitelt „Künstler-Untertitel (Künstlerseite)“Künstlerseiten stellen in der Regel künstlerbezogene Metadaten und Bibliotheksstatistiken bereit. Sie können dieselbe allgemeine Vorlagensyntax verwenden.
Unterstützte Felder (Künstler-Untertitel)
Abschnitt betitelt „Unterstützte Felder (Künstler-Untertitel)“titletitle.rawversiontagstypegenderdurationduration.seconds(Sekunden insgesamt)duration.d(.nz hinzufügen, um bei null auszublenden)duration.h(.nz hinzufügen, um bei null auszublenden)duration.m(.nz hinzufügen, um bei null auszublenden)duration.s(.nz hinzufügen, um bei null auszublenden)duration.dd(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.hh(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.mm(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)duration.ss(mit 0 aufgefüllt, .nz hinzufügen, um bei null auszublenden)genrestylemoodsong.countalbum.countinstrumentprovidernameofflinestatuslastplayeduserratinguserrating.5favoriteplaycountdescriptionlb
Beispiele für Künstler-Untertitel
Abschnitt betitelt „Beispiele für Künstler-Untertitel“Zähler mit Labels anzeigen
Abschnitt betitelt „Zähler mit Labels anzeigen“%song.count% Titel{ • %album.count% Alben}Genre- / Stilzeile
Abschnitt betitelt „Genre- / Stilzeile“%genre%{ • %style%}Badge Favorit nur anzeigen, wenn favorisiert
Abschnitt betitelt „Badge Favorit nur anzeigen, wenn favorisiert“{♥ Favorit%|favorite!=empty%}Instrument in einer neuen Zeile
Abschnitt betitelt „Instrument in einer neuen Zeile“%title%{\n%instrument%}