Skip to content
Snippets Groups Projects
Forked from AURA / engine
1704 commits behind, 365 commits ahead of the upstream repository.

1. Aura Engine Development Guide

This page gives insights on extending Aura Engine internals or through the API.

1.1. Architecture

AURA Engine as part of the AURA Radio Suite uses an modulear architecture based on a REST API. All external information is retrieved using JSON data-structures.

To get the basic architectural overview, visit the Aura Meta repository.

1.2. Required Data Sources

The AURA Project "Dashboard" provides the GUI to organize shows, schedules/timelsots and organize uploads in form of playlists. Those playlists can be organized in timeslots using a fancy calendar interface.

These data-sources need to be configurated in the "engine.ini" configuration file:

# The URL to get the Calendar via PV/Steering
calendarurl="http://localhost:8000/api/v1/playout"

# The URL to get show details via PV/Steering
api_show_url="http://localhost:8000/api/v1/shows/${ID}/"

The AURA Project "Tank" on the other hand delivers information on the tracks, playlists to be played and its meta-data:

# The URL to get playlist details via Tank
importerurl="http://localhost:8040/api/v1/shows/${SLUG}/playlists"

More information you can find here: https://gitlab.servus.at/autoradio/meta/blob/master/api-definition.md

1.3. Provided API Endpoints

Soundserverstate: Returns true and false values of the internal In- and Outputs

/api/v1/soundserver_state

Trackservice:

/api/v1/trackservice/<selected_date>
/api/v1/trackservice/

1.4. Components

aura.py: It is the server which is connected to the external programme source (e.g. aura steering and tank), to liquidsoap and is listening for redis pubsub messages. This precious little server is telling liquidsoap what to play and when.

Guru: The commandline tool for interacting with the server. Also provides the communication from Liquidsoap to the Python (Command-)Server.

Liquidsoap: The heart of AuRa Engine. It uses the built in mixer, to switch between different sources. It records everything and streams everything depending on your settings in aura.ini.

1.5. Running the Engine

Aura Engine is consisting of two components: The Python Engine and Liquidsoap Core.

It's important to start both components in the correct order:

1. Run the Python engine

./run.sh

2. Run the Liquidsoap core

./run.sh lqs

1.6. Default ports used by Engine

Aura Engine requires a number of ports for internal and external communication.

Those are the default port numbers:

  • 1234 ... Liquidsoap Telnet Server
  • 3333 ... Exposes the Engine API
  • 5000 ... Svelte development mode; dynamically uses some other port if occupied