Diese Seite beschreibt die Syntax benutzerdefinierter Textvorlagen in Symfonium und die Felder, die im jeweiligen Kontext verfügbar sind.
Die Seite ist folgendermaßen aufgebaut:
- Allgemeine Vorlagensyntax: Platzhalter, bedingte Blöcke, Bedingungen und Operatoren, Textformatierung, Escape-Regeln sowie global verfügbare lokalisierte
string.*-Beschriftungen - Kontextspezifische Abschnitte:
- Läuft gerade: zusätzliche Funktionen (
\t,\o,next.-Felder,chapter.*-Felder) sowie die vollständige Feldliste für „Läuft gerade“ - Album-Untertitel: albumbezogene Felder, die auf Albumseiten verfügbar sind
- Interpreten-Untertitel: interpretenbezogene Felder, die auf Interpretenseiten verfügbar sind
- Läuft gerade: 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% 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% ist ein Zeilenumbruch.
Bedingte Blöcke
Abschnitt betitelt „Bedingte Blöcke“Nutze Blöcke, um Satzzeichen oder Beschriftungen nur anzuzeigen, wenn ein Wert vorhanden ist oder eine Bedingung zutrifft.
Syntax: { ... }
- Ein
{ ... }-Block wird nur angezeigt, wenn sein erster Platzhalter eine der folgenden Bedingungen erfüllt:- Er verweist auf ein nicht leeres Feld
- Er ist ein wahrer Bedingungsplatzhalter (
%|condition%)
- Du kannst mehrere Platzhalter und wörtlichen Text in denselben
{ ... }-Block aufnehmen, aber nur der erste Platzhalter steuert, ob der Block angezeigt wird - Setze benötigte Leerzeichen innerhalb des Blocks, zum Beispiel
{ by %artist%}
Bedingter Block auf Basis eines Feldes
Abschnitt betitelt „Bedingter Block auf Basis eines Feldes“Beispiele:
| Vorlage | Beispielergebnis | Wenn das Feld leer ist |
|---|---|---|
%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 |
Bedingter Block auf Basis einer Bedingung
Abschnitt betitelt „Bedingter Block auf Basis einer Bedingung“Nutze %|condition% als ersten Platzhalter, um die Anzeige eines Blocks 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 { ... }“Nutze \n innerhalb bedingter Blöcke:
%album%{\n(%year%)}Außerhalb von { ... } solltest du %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.
Vergleichen kannst du:
- Einen anderen Feldnamen, zum Beispiel
artist,composer,year - Eine wörtliche Zeichenfolge oder Zahl in Anführungszeichen, zum Beispiel
"2012","Rock","256"
Hinweise zu Literalen:
trackbezeichnet das gleichnamige Feld"track"bezeichnet den wörtlichen Texttrack- Anführungszeichen können in Werten vorkommen. Stelle 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" | Wörtliche Zahlen müssen in Anführungszeichen stehen |
< | 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" | einschließlich der Grenzwerte |
Mehrere Bedingungen, gemischte && / || und Klammern
Abschnitt betitelt „Mehrere Bedingungen, gemischte && / || und Klammern“- Nutze
&&für UND - Nutze
||für ODER - Du kannst
&&und||in derselben Bedingung kombinieren - Nutze Klammern
(...), um die Auswertungsreihenfolge 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“**Bold**__Underline__~~Strike~~//Italics//^^CAPS^^Lokalisierte Beschriftungen (string.*)
Abschnitt betitelt „Lokalisierte Beschriftungen (string.*)“Diese Platzhalter geben übersetzte Texte in der eingestellten Sprache 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
Läuft gerade (kompakt & erweitert)
Abschnitt betitelt „Läuft gerade (kompakt & erweitert)“Textvorlagen für „Läuft gerade“ können auf Folgendes zugreifen:
- Titelmetadaten
- Status der Wiedergabe
- Status der Warteschlange
- Status der Kapitel
- Audioformat
- EQ- und Wiedergabegeräteinformationen
- und mehr
Funktionen nur für „Läuft gerade“
Abschnitt betitelt „Funktionen nur für „Läuft gerade““Mit \t in mehrere Segmente aufteilen
Abschnitt betitelt „Mit \t in mehrere Segmente aufteilen“Nutze \t, um eine Vorlage in mehrere Segmente aufzuteilen.
Beispiel:
%player.position%\t%format%\t%player.duration%Bei horizontaler Ausrichtung mit verteiltem Abstand wird dies normalerweise so angezeigt:
- links: Position
- Mitte: Format
- rechts: Dauer
Selektive Schutzüberlagerung mit \o
Abschnitt betitelt „Selektive Schutzüberlagerung mit \o“Nutze \o, um eine Schutzüberlagerung nur auf diesen Teil anzuwenden, auch wenn die gesamte Textvorlage nicht geschützt ist.
Präfix next.
Abschnitt betitelt „Präfix next.“Setze next. vor ein Feld mit Elementdaten, um auf den nächsten Eintrag der Warteschlange zu verweisen:
%next.title%Bei Kapitelfeldern verweist next.chapter.* auf das nächste Kapitel.
Unterstützte Felder (Läuft gerade)
Abschnitt betitelt „Unterstützte Felder (Läuft gerade)“Titel- / Album-Metadaten
Abschnitt betitelt „Titel- / Album-Metadaten“titletitle.rawcleantitle(Titel ohne hinzugefügte Titelnummer oder Kennzeichnung für anstößige Inhalte)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 einer intelligenten Warteschlange, 2+ bei einem intelligenten Verlauf)
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 / Wiedergabegerät
Abschnitt betitelt „EQ / Ausgabe / Wiedergabegerät“eq.profileeq.configoutput.currentrenderer.currentrenderer.type
Hilfsfelder
Abschnitt betitelt „Hilfsfelder“lb(Zeilenumbruch)bool1bool2bool3bool4bool5
Beispiele für „Läuft gerade“
Abschnitt betitelt „Beispiele für „Läuft gerade““übersichtlicher zweizeiliger Titelblock
Abschnitt betitelt „übersichtlicher zweizeiliger Titelblock“%title%%lb%{by %artist%}Album + Jahr nur, wenn das Jahr vorhanden ist
Abschnitt betitelt „Album + Jahr nur, wenn das Jahr vorhanden ist“%album%{ (%year%)}Composer ● Artist nur, wenn der Komponist vorhanden ist
Abschnitt betitelt „Composer ● Artist 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 ein anderes Wiedergabegerät)
Abschnitt betitelt „aktives Ausgabegerät anzeigen (Android oder ein anderes Wiedergabegerät)“{ %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 du einer Textvorlage die Aktion toggle bool1 zuweist, 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“Vol %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%unverarbeitete Formatwerte
Abschnitt betitelt „unverarbeitete 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 Status der Warteschlange oder des Players. Du kannst 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 du eine vergeben hast
Abschnitt betitelt „Bewertung nur anzeigen, wenn du eine vergeben hast“{★ %userrating.5%/5%|userrating!=empty%}Kennzeichnung Downloaded
Abschnitt betitelt „Kennzeichnung Downloaded“{⬇ Offline%|offlinestatus!=empty%}Interpreten-Untertitel (Interpretenseite)
Abschnitt betitelt „Interpreten-Untertitel (Interpretenseite)“Interpretenseiten stellen in der Regel interpretenbezogene Metadaten und Bibliotheksstatistiken bereit. Du kannst dieselbe allgemeine Vorlagensyntax verwenden.
Unterstützte Felder (Interpreten-Untertitel)
Abschnitt betitelt „Unterstützte Felder (Interpreten-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 Interpreten-Untertitel
Abschnitt betitelt „Beispiele für Interpreten-Untertitel“Zähler mit Beschriftungen anzeigen
Abschnitt betitelt „Zähler mit Beschriftungen anzeigen“%song.count% songs{ • %album.count% albums}Genre- / Stilzeile
Abschnitt betitelt „Genre- / Stilzeile“%genre%{ • %style%}Kennzeichnung Favorite nur für Favoriten anzeigen
Abschnitt betitelt „Kennzeichnung Favorite nur für Favoriten anzeigen“{♥ Favorite%|favorite!=empty%}Instrument in einer neuen Zeile
Abschnitt betitelt „Instrument in einer neuen Zeile“%title%{\n%instrument%}