Templates

What’s Now Playing handles almost all output via the Jinja2 templating system which includes an extremely powerful language that enables you a full range of customizing the output.

In general, What’s Now Playing provides a generic set of variables for use in any template. These values are filled based on a few factors:

  • the input source providing its data

  • media tag quality

  • What’s Now Playing’s file type and tag compatibility

Some examples:

  • An MP3 file missing ID3 tags may only have title available.

  • Serato in Remote mode, title, and optionally artist are available.

  • MP4/M4V files have minimal support currently in What’s Now Playing, so will not have the label

  • VOBS files do not support tagging and will only have information available from the DJ software, if possible

Some outputs (e.g., TwitchBot) may provide additional variables that offer other, context-sensitive features. See their pages for more information.

Reminder

In order to perform these look ups, certain data is required to be tagged in the media to make the results remotely accurate. More data == more better results. Therefore, media with ISRC tags will cause MusicBrainz lookups if that service is enabled to fill in any missing data.

Supported Variables

Variable

Description

album

Album track comes from

albumartist

Artist listed on the album

artist

Artist for the song

artistlongbio

Full biography of the artist (from “Artist Extras”)

artistshortbio

First paragraph of the long bio (from “Artist Extras”)

artistwebsites

List of URLs for the artist

bitrate

Bitrate the file was encoded at

bpm

Beats per minute of the song

comments

Comments from either the DJ software or the song file, whichever is discovered first

composer

Composer of the song

coverurl

Relative location to fetch the cover. Note that this will only work when the webserver is active.

date

Date (either release date or date of the media)

deck

deck # this track is playing on

disc

Disc number

discsubtitle

disc subtitle (if there is one)

disc_total

Total number of discs in album

duration

Total expected track time in seconds

duration_hhmmss

Same as duration but in HH:MM:SS format (so 1 minute 30 seconds becomes 01:30)

filename

Local filename of the media

genre

Genre of the song

hostip

IP address of the machine running What’s Now Playing

hostfqdn

Fully qualified hostname of the machine running What’s Now Playing

hostname

Short hostname of the machine running What’s Now Playing

httpport

Port number that is running the web server

isrc

List of International Standard Recording Code

key

Key of the song

label

Label of the media.

lang

Language used by the media

musicbrainzalbumid

MusicBrainz Album Id

musicbrainzartistid

List of MusicBrainz Artist Ids

musicbrainzrecordingid

MusicBrainz Recording Id

previoustrack

See below for more details.

title

Title of the media

track

Track number on the disc

track_total

Total tracks on the disc

Implementation Notes

Arrays

Some fields that might be multi-valued (e.g., genre) will be merged into one. If they are not merged, the description will specifically say it is a list.

Undefined

When rendering templates, What’s Now Playing will set any undefined variables to the empty string. Instead of having to render a template as:

{% if variable is defined and variable is not none and variable|length %}

This can be short-cut to:

{% if variable %}

since the variable will always be defined. This also means that templates that incorrectly use the wrong variable name will render, just with an empty string in place of the expected text.

Previous Track Details

The previoustrack variable is a list of played tracks in _reverse_ order, starting with current track at zero. It currently holds just the artist and the title of the track. Some examples:

{{ previoustrack[0].artist }}

will show the current artist playing.

{{ previoustrack[1].artist }}

will show the previous-to-current artist.

To get the title of the track played 2 tracks ago:

{{ previoustrack[2].title }}

For a more complex example, see the twitchbot_previoustrack.txt file in the templates directory.