Sending Now Playing metadata to our platform

Prev Next

Our platform supports various ways to receive live "Now Playing" song information for a stream.

Most radio play-out systems support automatically sending this information, but publishers can also use their own scripts to update this information.

We make this "Now Playing" data available to listeners in our web players (including optional artwork lookup) and via a JSON endpoint for more direct integration into websites and mobile apps.

To send metadata, publishers need their unique values for the username, password, ip and mountpoint values used in these examples. To get these values, visit the "Streaming" page on the publisher dashboard and use the "Encoder setup" button.

stream.encoder.settings.png

Send metadata with Icecast

Icecast supports metadata to be sent for an active mountpoint by calling an HTTP endpoint:

http://<username>:<password>@<ip>:8000/admin/metadata?mount=/<mountpoint>&mode=updinfo&song=<songname>

Typical Icecast streaming source clients like BUTT automatically uses this endpoint but it can be called manually also:

curl http://source:examplepassword@1.2.3.4:8000/admin/metadata?mount=/123_primary&mode=updinfo&charset=UTF-8&song=ACDC+Back+In+Black

<iceresponse>
  <message>Metadata update successful</message>
  <return>1</return>
</iceresponse>

Important Icecast notes

Icecast will only accept metadata if:

  • The mountpoint is currently online,
  • The IP address sending the metadata matches the IP address sending the audio into the mountpoint
  • The metadata endpoint expects data in the UTF8 character set. Anything else may be rejected or displayed incorrectly.
  • The "songname" value should be in + delimited values with artist first, for example: ACDC+Back+In+Black.

Sending metadata with RCS Zetta

We provide native support to receive "Now Playing" metadata from the RCS Zetta radio automation software. When current song information changes, it sends XML data via an HTTP POST to a remote server. See this article for details on setting up Zetta.

Sending metadata with Jazler Radiostar

We provide native support to receive "Now Playing" metadata from the Jazler Radiostar 2 radio automation software. When current song information changes, it uploads an NowOnAir.xml file to a remote FTP server. Configure the “Jazler Internet File Updater” to use these settings:

Server address: <ip>
Remote directory: files/
Username: source
Password: <password>

Sending metadata with Simian Pro

Simian Pro can be configured to send "Now Playing" metadata to our platform via Icecast. Consult the "Configuring Streaming (HTTP call) Output" section on page 51 of the Simian Pro 2.3 manual.

simian.png

  1. Under the "Streaming" tab of the program options, in the "Stream Encoding Metadata" section, enable the "Icecast" item and use the provided URL, username and password specific to your stream instance.

  2. In the EncoderData.ini file, modify the IceCAST line to change the mountpoint name from live to match the mountpoint assigned to your stream:

IceCAST=/admin/metadata?mount=/yourmountname&mode=updinfo&song=%artist%+-+%title%
  1. Enable the "Encode Stream Encoding Metadata (use URL entities)" setting.

Subject to Icecast limitations.

Sending metadata with RadioBOSS

RadioBoss can be configured to send "Now Playing" metadata to our platform via Icecast.

Under the "Broadcast" section of the RadioBOSS configuration used to send the Icecast stream, use the "Metadata" panel to configure sending the song metadata.

See the RadioBOSS manual

Subject to Icecast limitations.

Sending metadata by calling HTTP endpoints

Every stream has a custom password-protected HTTP endpoint where "Now Playing" information can be sent.

Endpoint location

The URL structure for this endpoint is:

http://source:<password>@<ip>/metadata/capture/<stream_id>

This endpoint is only available on plain HTTP on port 80 and text data must use the UTF8 character encoding.

Data can be passed sent as HTTP POST data (recommended), HTTP POST with JSON encoded data or URL query parameters (not recommended).

Endpoint data fields

This endpoint data supports these fields:

Field Description Notes
event The type of event that was triggered which indicates roughly the type of content being played. Valid values are: song, ad, news, show, podcast, interview, spot, link Default: song
artist Name of the artist playing the current song, or name of interviewer, news reader or related vocals. Free form text, limited to 50 characters. Example: AC/DC
title Title of the current song, topic of interview or any other information. Free form text, limited to 50 characters. Example: T.N.T
album Name of album, if available. Free form text, limited to 50 characters. Example: High Voltage
genre Music genre or audio category. Example: Hard rock
duration Duration of this event in seconds if known in advance, for example length of song. Accepts either integer number of seconds or an hh:mm:ss string. Example: 185 seconds, or 00:03:05
artwork Either a base-64 encoded image or a direct URL to an image. We recommend square aspect ratio images of 300x300 pixels. Example: URL https://ex.com/song.png or BASE64 data:image/png;base64,ENCODEDDATA
link Any URL associated with the current item. Example: https://yoursite.com/show

HTTP POST data example

Using traditional HTTP POST encoding:

curl --user source:<password> \
     --write-out '%{http_code}' \
     --request POST \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --data 'event=song&artist=AC/DC&title=Back in Black&length=04:14' \
     "http://<ip>/metadata/capture/<stream_id>"

HTTP POST with JSON data example

The same endpoint can also accept input as JSON data in the HTTP BODY with the same fields. Escaping is not required in this case:

curl --user source:<password> \
     --write-out '%{http_code}' \
     --request POST \
     --header 'Content-Type: application/json' \
     --data '{ "event":"song", "artist":"AC/DC", "title":"Back In Black", "duration":254 }' \
     "http://<ip>/metadata/capture/<stream_id>"

URL Query parameters example

Query parameters are attached to the end of a URL and may need to be escaped to ensure a valid URL.

Query parameters are not recommended and should only be used when sending basic artist/title information.

Example:

curl --user source:<password> \
     --write-out '%{http_code}' \
     --request POST \
     "http://<ip>/metadata/capture/<stream_id>?event=song&artist=AC%2FDC&title=Back%20In%20Black&duration=254"

Prevent ad names from being displayed or loading artwork

When the playout system is broadcasting an ad, some playout systems will send this data as Now Playing data also.
To prevent our player from displaying the ad name to end users or using it to load artwork, add the word "ad" anywhere standalone in the titles of your ad creatives.

For example, all these titles will be effective to ignore the ad:

"Ad name", "ad name", "name ad", "name - ad", "name - ad - more details", "AD NAME"

​The matching is not case-sensitive, you can use "ad", "Ad", "AD", "aD".

If the word "ad" is not a standalone word in the title if will not be detected and ignored. ex:

"Ad: name", "Advertisement", "AdName"