Commit e3f72817 authored by Lars Kruse's avatar Lars Kruse
Browse files

docs: fix spelling issues

Thanks, codespell!
parent d041f86c
Pipeline #1112 passed with stage
in 1 minute and 3 seconds
...@@ -25,7 +25,7 @@ the requirements of community radio stations. ...@@ -25,7 +25,7 @@ the requirements of community radio stations.
## Functionality ## Functionality
In conjuction with other AURA components Engine provides several features: In conjunction with other AURA components Engine provides several features:
- **Scheduler** to automatically broadcast your radio programme (see [AURA Dashboard](https://gitlab.servus.at/aura/dashboard) for an user interface to do scheduling) - **Scheduler** to automatically broadcast your radio programme (see [AURA Dashboard](https://gitlab.servus.at/aura/dashboard) for an user interface to do scheduling)
- **Analog input and outputs** provided by [Engine Core](https://gitlab.servus.at/aura/engine-core) - **Analog input and outputs** provided by [Engine Core](https://gitlab.servus.at/aura/engine-core)
...@@ -53,7 +53,7 @@ It's possible to schedules playlists with music or pre-recorded shows stored on ...@@ -53,7 +53,7 @@ It's possible to schedules playlists with music or pre-recorded shows stored on
The switching between types of audio source is handled automatically, with configured fadings applied. The switching between types of audio source is handled automatically, with configured fadings applied.
> Note: Any live sources or streams not specifing a length property, are automatically expanded to the left duration of the timeslot. > Note: Any live sources or streams not specifying a length property, are automatically expanded to the left duration of the timeslot.
#### Default playlists #### Default playlists
...@@ -64,13 +64,13 @@ for schedules and shows: ...@@ -64,13 +64,13 @@ for schedules and shows:
In case the timeslot doesn't have any specific playlist assigned, this playlist is broadcasted. In case the timeslot doesn't have any specific playlist assigned, this playlist is broadcasted.
- **Default Show Playlist**: This playlist can be assigned to some show. If neither the specific timeslot - **Default Show Playlist**: This playlist can be assigned to some show. If neither the specific timeslot
playlist nor the default schedule playlist is specificed the *default show playlist* is broadcasted. playlist nor the default schedule playlist is specified the *default show playlist* is broadcasted.
If none of these playlists have been specified the *Auto DJ* feature of [Engine Core](https://gitlab.servus.at/aura/engine-core) takes over (optional). If none of these playlists have been specified the *Auto DJ* feature of [Engine Core](https://gitlab.servus.at/aura/engine-core) takes over (optional).
### Heartbeat Monitoring ### Heartbeat Monitoring
Instead of checking all status properties, the Heartbeat only validates the vital ones required to run the engine. If all of those are valid, a network socket request is sent to a defined server. This heartbeat is sent continiously based on the configured `heartbeat_frequency`. The service receiving this heartbeat ticks can decide what to do with that information. One scenario could be switching to another Engine instance or any other custom failover scenario. Under `contrib/heartbeat-monitor` you'll find some sample application digesting these heartbeat signals. Instead of checking all status properties, the Heartbeat only validates the vital ones required to run the engine. If all of those are valid, a network socket request is sent to a defined server. This heartbeat is sent continuously based on the configured `heartbeat_frequency`. The service receiving this heartbeat ticks can decide what to do with that information. One scenario could be switching to another Engine instance or any other custom failover scenario. Under `contrib/heartbeat-monitor` you'll find some sample application digesting these heartbeat signals.
### Logging ### Logging
......
...@@ -5,7 +5,7 @@ This page gives insights on extending Aura Engine internals or through the API. ...@@ -5,7 +5,7 @@ This page gives insights on extending Aura Engine internals or through the API.
<!-- TOC --> <!-- TOC -->
1. [Aura Engine Development Guide](#aura-engine-development-guide) 1. [Aura Engine Development Guide](#aura-engine-development-guide)
1. [AURA Componentes](#aura-componentes) 1. [AURA Components](#aura-componentes)
2. [Engine Components](#engine-components) 2. [Engine Components](#engine-components)
3. [Running for Development](#running-for-development) 3. [Running for Development](#running-for-development)
4. [Testing](#testing) 4. [Testing](#testing)
...@@ -16,7 +16,7 @@ This page gives insights on extending Aura Engine internals or through the API. ...@@ -16,7 +16,7 @@ This page gives insights on extending Aura Engine internals or through the API.
<!-- /TOC --> <!-- /TOC -->
## AURA Componentes ## AURA Components
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. 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.
...@@ -28,7 +28,7 @@ For example: ...@@ -28,7 +28,7 @@ For example:
- Steering, to get the main incredient of an play-out engine: schedules (or "timeslots" in Steering terms), - Steering, to get the main incredient of an play-out engine: schedules (or "timeslots" in Steering terms),
which hold the actual information on playlists and their entries. which hold the actual information on playlists and their entries.
- Dashboard, to have a neat interface, being able to programm the timeslots - Dashboard, to have a neat interface, being able to programme the timeslots
- Tank, to get the references to audio files and other audio sources. Plus the actual files. - Tank, to get the references to audio files and other audio sources. Plus the actual files.
If you need to test and develop against the Engine's API you'll also need to get the `engine-api` project running. If you need to test and develop against the Engine's API you'll also need to get the `engine-api` project running.
...@@ -57,7 +57,7 @@ Ensure you have following other projects up and running: ...@@ -57,7 +57,7 @@ Ensure you have following other projects up and running:
- engine-api - engine-api
- dashboard-clock (optional) - dashboard-clock (optional)
The following steps espect you having done the bases configuration and set up a database as outlined in the [Native Installation](https://gitlab.servus.at/aura/engine/-/blob/master/docs/bare-metal-installation.md) document. The following steps expect you having done the bases configuration and set up a database as outlined in the [Native Installation](https://gitlab.servus.at/aura/engine/-/blob/master/docs/bare-metal-installation.md) document.
If you don't have already, you'll need to create an virtual environment: If you don't have already, you'll need to create an virtual environment:
...@@ -122,7 +122,7 @@ point in time and the involved phase before: ...@@ -122,7 +122,7 @@ point in time and the involved phase before:
in `engine.ini`). The actual start of the window is calcuated by (timeslot start - window start) in `engine.ini`). The actual start of the window is calcuated by (timeslot start - window start)
and the end by (timeslot end - window end) and the end by (timeslot end - window end)
During the scheduling window, the external API Endpoints are pulled continiously, to During the scheduling window, the external API Endpoints are pulled continuously, to
check for updated timeslots and related playlists. Also, any changes to playlists and check for updated timeslots and related playlists. Also, any changes to playlists and
its entries are respected within that window (see `fetching_frequency` in `engine.ini`). its entries are respected within that window (see `fetching_frequency` in `engine.ini`).
......
...@@ -41,7 +41,7 @@ def configure_flask(): ...@@ -41,7 +41,7 @@ def configure_flask():
app.config['BABEL_DEFAULT_LOCALE'] = 'de' app.config['BABEL_DEFAULT_LOCALE'] = 'de'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# FIXME Instatiate SQLAlchemy without the need for Flask # FIXME Instantiate SQLAlchemy without the need for Flask
app = Flask(__name__) app = Flask(__name__)
configure_flask() configure_flask()
DB = SQLAlchemy(app) DB = SQLAlchemy(app)
......
...@@ -43,7 +43,7 @@ class NoActiveEntryException(Exception): ...@@ -43,7 +43,7 @@ class NoActiveEntryException(Exception):
# Liquidsoap Execeptions # Liquidsoap Exceptions
class LQConnectionError(Exception): class LQConnectionError(Exception):
pass pass
......
...@@ -37,7 +37,7 @@ class SimpleUtil: ...@@ -37,7 +37,7 @@ class SimpleUtil:
This alters the input so you may wish to `copy` the dict first. This alters the input so you may wish to `copy` the dict first.
Args: Args:
data (dict): The dicationary data (dict): The dictionary
Returns: Returns:
(dict): (dict):
...@@ -67,7 +67,7 @@ class SimpleUtil: ...@@ -67,7 +67,7 @@ class SimpleUtil:
@staticmethod @staticmethod
def nano_to_seconds(nanoseconds): def nano_to_seconds(nanoseconds):
""" """
Converts nano-seconds to senconds Converts nano-seconds to seconds
Args: Args:
(Integer) nanoseconds (Integer) nanoseconds
...@@ -81,7 +81,7 @@ class SimpleUtil: ...@@ -81,7 +81,7 @@ class SimpleUtil:
@staticmethod @staticmethod
def seconds_to_nano(seconds): def seconds_to_nano(seconds):
""" """
Converts senconds to nano-seconds Converts seconds to nano-seconds
Args: Args:
(Integer) seconds (Integer) seconds
......
...@@ -136,7 +136,7 @@ class PlayerConnector(): ...@@ -136,7 +136,7 @@ class PlayerConnector():
self.disable_transaction(socket=self.client, force=True) self.disable_transaction(socket=self.client, force=True)
raise e raise e
else: else:
self.event_dispatcher.on_critical("Criticial Liquidsoap connection issue", \ self.event_dispatcher.on_critical("Critical Liquidsoap connection issue", \
"Could not connect to Liquidsoap after multiple attempts", e) "Could not connect to Liquidsoap after multiple attempts", e)
raise e raise e
......
...@@ -73,7 +73,7 @@ class SocketControlInterface: ...@@ -73,7 +73,7 @@ class SocketControlInterface:
Network socket server to control a running Engine from Liquidsoap. Network socket server to control a running Engine from Liquidsoap.
Note this server only allows a single connection at once. This Note this server only allows a single connection at once. This
service is primarly utilized to store new playlogs. service is primarily utilized to store new playlogs.
""" """
PORT = 1337 PORT = 1337
ACTION_ON_METADATA = "on_metadata" ACTION_ON_METADATA = "on_metadata"
...@@ -256,7 +256,7 @@ class EngineExecutor(Timer): ...@@ -256,7 +256,7 @@ class EngineExecutor(Timer):
""" """
@private @private
Child timers are dependend on their parents. So let's wait until parents are done with their stuff => finished execution. Child timers are dependent on their parents. So let's wait until parents are done with their stuff => finished execution.
Checks the parent state to be finished every 0.2 seconds. Checks the parent state to be finished every 0.2 seconds.
""" """
if self.parent_timer: if self.parent_timer:
......
...@@ -213,7 +213,7 @@ class Player: ...@@ -213,7 +213,7 @@ class Player:
Pre-Load the entry. This is required before the actual `play(..)` can happen. Pre-Load the entry. This is required before the actual `play(..)` can happen.
Be aware when using this method to queue a very short entry (shorter than ``) this may Be aware when using this method to queue a very short entry (shorter than ``) this may
result in sitations with incorrect timing. In this case bundle multiple short entries as result in situations with incorrect timing. In this case bundle multiple short entries as
one queue using `preload_playlist(self, entries)`. one queue using `preload_playlist(self, entries)`.
It's important to note, that his method is blocking until loading has finished. If this It's important to note, that his method is blocking until loading has finished. If this
...@@ -295,7 +295,7 @@ class Player: ...@@ -295,7 +295,7 @@ class Player:
def play(self, entry, transition): def play(self, entry, transition):
""" """
Plays a new `Entry`. In case of a new timeslot (or some intented, immediate transition), Plays a new `Entry`. In case of a new timeslot (or some intended, immediate transition),
a clean channel is selected and transitions between old and new channel is performed. a clean channel is selected and transitions between old and new channel is performed.
This method expects that the entry is pre-loaded using `preload(..)` or `preload_group(self, entries)` This method expects that the entry is pre-loaded using `preload(..)` or `preload_group(self, entries)`
...@@ -425,7 +425,7 @@ class Player: ...@@ -425,7 +425,7 @@ class Player:
entry (Entry): The entry to be pre-loaded entry (Entry): The entry to be pre-loaded
Returns: Returns:
(Boolean): `True` if successfull (Boolean): `True` if successful
""" """
self.stream_load(entry.channel, entry.source) self.stream_load(entry.channel, entry.source)
time.sleep(1) time.sleep(1)
...@@ -448,7 +448,7 @@ class Player: ...@@ -448,7 +448,7 @@ class Player:
def stream_load(self, channel, url): def stream_load(self, channel, url):
""" """
Preloads the stream URL on the given channel. Note this method is blocking Preloads the stream URL on the given channel. Note this method is blocking
some serious amount of time; hence it's worth being called asynchroneously. some serious amount of time; hence it's worth being called asynchronously.
Args: Args:
channel (Channel): The stream channel channel (Channel): The stream channel
...@@ -486,7 +486,7 @@ class Player: ...@@ -486,7 +486,7 @@ class Player:
def stream_is_ready(self, channel, url): def stream_is_ready(self, channel, url):
""" """
Checks if the stream on the given channel is ready to play. Note this method is blocking Checks if the stream on the given channel is ready to play. Note this method is blocking
some serious amount of time even when successfull; hence it's worth being called asynchroneously. some serious amount of time even when successful; hence it's worth being called asynchronously.
Args: Args:
channel (Channel): The stream channel channel (Channel): The stream channel
......
...@@ -221,7 +221,7 @@ class EngineEventDispatcher(): ...@@ -221,7 +221,7 @@ class EngineEventDispatcher():
def on_play(self, entry): def on_play(self, entry):
""" """
Event Handler which is called by the engine when some play command to Liquidsoap is issued. Event Handler which is called by the engine when some play command to Liquidsoap is issued.
This does not indiciate that Liquidsoap started playing actually, only that the command has This does not indicate that Liquidsoap started playing actually, only that the command has
been issued. To get the metadata update issued by Liquidsoap use `on_metadata` instead. been issued. To get the metadata update issued by Liquidsoap use `on_metadata` instead.
Args: Args:
......
...@@ -288,7 +288,7 @@ class Playlog: ...@@ -288,7 +288,7 @@ class Playlog:
Any previous timeslot is stored to `self.previous_timeslot` and the following one Any previous timeslot is stored to `self.previous_timeslot` and the following one
to `self.next_timeslot`. to `self.next_timeslot`.
This method is protect by overwritting by multiple calls with the same timeslot. This method is protect by overwriting by multiple calls with the same timeslot.
Args: Args:
timeslot (Timeslot): The current timeslot timeslot (Timeslot): The current timeslot
......
...@@ -192,7 +192,7 @@ class ResourceUtil(Enum): ...@@ -192,7 +192,7 @@ class ResourceUtil(Enum):
Args: Args:
uri (String): The path to the audio source uri (String): The path to the audio source
cue_in (Float): The value in seconds wher the cue in should start cue_in (Float): The value in seconds where the cue in should start
Returns: Returns:
(String): The annotated URI (String): The annotated URI
......
...@@ -286,7 +286,7 @@ class ApiFetcher(threading.Thread): ...@@ -286,7 +286,7 @@ class ApiFetcher(threading.Thread):
def polish_timeslots(self, timeslots): def polish_timeslots(self, timeslots):
""" """
Removes all timeslots which are not relevant for further processing, Removes all timeslots which are not relevant for further processing,
and transparent timeslot ID assigment for more expressive use. and transparent timeslot ID assignment for more expressive use.
""" """
count_before = len(timeslots) count_before = len(timeslots)
timeslots = TimeslotFilter.filter_24h(timeslots) timeslots = TimeslotFilter.filter_24h(timeslots)
......
...@@ -88,7 +88,7 @@ class AuraDatabaseModel(): ...@@ -88,7 +88,7 @@ class AuraDatabaseModel():
def refresh(self): def refresh(self):
""" """
Refreshes the currect record Refreshes the correct record
""" """
DB.session.expire(self) DB.session.expire(self)
DB.session.refresh(self) DB.session.refresh(self)
...@@ -152,8 +152,8 @@ class Timeslot(DB.Model, AuraDatabaseModel): ...@@ -152,8 +152,8 @@ class Timeslot(DB.Model, AuraDatabaseModel):
playlist (Playlist): The specific playlist for this timeslot playlist (Playlist): The specific playlist for this timeslot
schedule_default (Playlist): Some playlist played by default, when no specific playlist is assigned schedule_default (Playlist): Some playlist played by default, when no specific playlist is assigned
show_default (Playlist): Some playlist played by default, when no default schedule playlist is assigned show_default (Playlist): Some playlist played by default, when no default schedule playlist is assigned
schedule_fallback (Playlist): Some playlist played as fallback, when no specific playlist is assigned or if it is errorneous (includes silence detection) schedule_fallback (Playlist): Some playlist played as fallback, when no specific playlist is assigned or if it is erroneous (includes silence detection)
show_fallback (Playlist): Some playlist played as fallback, when no schedule fallback playlist is assigned or if some specific playlist is errorneous (includes silence detection) show_fallback (Playlist): Some playlist played as fallback, when no schedule fallback playlist is assigned or if some specific playlist is erroneous (includes silence detection)
station_fallback (Playlist): Defined in the original AURA API but not implemented, as station fallbacks are handled locally station_fallback (Playlist): Defined in the original AURA API but not implemented, as station fallbacks are handled locally
""" """
__tablename__ = 'timeslot' __tablename__ = 'timeslot'
......
...@@ -169,7 +169,7 @@ class M3UPlaylistProcessor(): ...@@ -169,7 +169,7 @@ class M3UPlaylistProcessor():
class TimeslotRenderer: class TimeslotRenderer:
""" """
Displays current and next timeslots in ASCII for maintainence and debugging. Displays current and next timeslots in ASCII for maintenance and debugging.
""" """
logger = None logger = None
scheduler = None scheduler = None
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment