Skip to main content

# Icecast

Parse metadata from any Icecast Station (streams) to use for scrobbling.

note

There is no standard format for presenting track information in an Icecast stream and the majority of streams that do include metadata only use a single string (`StreamTitle`) from which metadata can be parsed.

Multi-scrobbler will do its best to parse Artist/Album/Track information from this data but the quality and consistency for this is solely based on how the Icecast broadcaster chooses to format their tracks.

Multi-scrobbler cannot automatically determine if you are listening to a Station. Therefore, automatic monitoring for Icecast Sources is off by default. Use Monitoring Behavior to initiate scrobbling or configure automatic scrobble.

Auto Monitoring Behavior

This Source supports toggling monitoring on or off manually. This action can be taken on the Web Dashboard by clicking the link next to Monitoring found in each Source's status card.

Additionally, the default monitoring behavior can be explicitly set by adding the following value to a Source's `options` in file or aio config:

icecast.json

    {
      "data": {
          // ...
      },
      "options": {
          // set to true to always monitor (unless manually invoked)
          // set to false to never monitor (unless manually invoked)
          "autoMonitor": true
      }
    }}

This component's default monitoring behavior, when the above is not set, is to never monitor.
Scrobbling Threshold

Icecast does not report track lengths so multi-scrobbler cannot determine if it should scrobble based on percent played. You should instead set a shorter "listened to" duration using Scrobble Thresholds.

#### URL and Sources​

The URL should be the URL you would use to stream audio.

Additional sources are supported based on those found in `icecast-metadata-stats`. To use these with automatic parsing based on the regular URL include a `sources` array in your config the same way as shown in `icecast-metadata-stats`:

Example
config.json

    [
        {
          "name": "myIcy",
          "enable": true,
          "data": {
            "url": "http://myIcecast.com/radio",
            "sources": ["icy", "ogg", "sevenhtml"]
          }
        }
      ]

To manually set these sources include the same `*Endpoint` options found in `icecast-metadata-stats`.

If no `sources` are configured for multi-scrobbler it will automatically try to use `icy` and `ogg`.

## Configuration​

- ENV
- File
- AIO

Configuration Type

This is configuration for the ENV Config Type.

Environmental Variable | Type | Default | Description
--- | --- | --- | ---
`ICECAST_ID` | string |  | A globally unique ID EX `myComponentId`
`ICECAST_NAME` | string | Value of `ICECAST_ID` | A vanity name EX `My Cool Component`
`ICECAST_ENABLE` | boolean | true | Should this component be used?
`ICECAST_URL` | string |  | The Icecast stream URL
`ICECAST_AUTO_MONITOR` | boolean |  |

Bold/Italic = Required

Config Structure

This displays the structure of the File Configuration for a icecast type Source with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.

Loading ...
Config Example

This displays an example config file of a icecast Source File Configuration that adheres to the shown Config Structure.

- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.

Both modes validate that the configuration is correct. Any errors show up as squiggly lines.

important

Only source icecast configs will validate correctly in the editor but both source and client icecast configs are allowed in the real `CONFIG/icecast.json`

After you finish editing, switch to text and then copy all text to get a completed config.

Config Example Mobile Experience

This displays an example config file of a icecast Source File Configuration that adheres to the shown Config Structure.

The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.

CONFIG/icecast.json

    [
      {
        "name": "Station 1",
        "enable": true,
        "id": "myIceStation1",
        "data": {
          "url": "http://myIcecast.com/radio"
        }
      }
    ]

Config Structure

This displays the structure of the all-in-one (`config.json`) configuration with all possible properties, their shape, and descriptions/types. Use this to understand how to write a valid config.

Select the icecast type from the respective `sources` node below, then expand it.

Loading ...
Config Example

This displays an example config file of a all-in-one (`config.json`) configuration that includes a icecast Source that adheres to the shown Config Structure.

- text mode lets you edit the JSON directly.
- tree mode gives you a guided point-and-click editing experience that always keeps the JSON syntax valid.

Both modes validate that the configuraion is correct. Any errors show up as squiggly lines.

After you finish editing, switch to text and then copy all text to get a completed config.

Config Example Mobile Experience

This displays an example config file of a all-in-one (`config.json`) configuration that includes a icecast Source that adheres to the shown Config Structure.

The example config file editor is meant for a larger screen experience so only the read-only example is shown. Please use this site on a tablet/laptop/desktop to enable file editor features.

CONFIG/config.json

    {
      "sources": [
        {
          "name": "Station 1",
          "enable": true,
          "id": "myIceStation1",
          "data": {
            "url": "http://myIcecast.com/radio"
          },
          "type": "icecast"
        }
      ]
    }