From 522356bdfe19724458770a27d14c65ddc4980236 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Sun, 11 Oct 2020 20:57:24 +0200
Subject: [PATCH] Provide configuration for station fallbacks. #43

---
 configuration/playlists/.gitignore          |  4 ++++
 configuration/sample-development.engine.ini | 22 ++++++++++-----------
 configuration/sample-docker.engine.ini      | 14 ++++++-------
 configuration/sample-production.engine.ini  | 16 +++++++--------
 modules/base/config.py                      |  4 ++--
 modules/liquidsoap/settings.liq             | 13 ++++++++----
 6 files changed, 41 insertions(+), 32 deletions(-)
 create mode 100644 configuration/playlists/.gitignore

diff --git a/configuration/playlists/.gitignore b/configuration/playlists/.gitignore
new file mode 100644
index 00000000..86d0cb27
--- /dev/null
+++ b/configuration/playlists/.gitignore
@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
\ No newline at end of file
diff --git a/configuration/sample-development.engine.ini b/configuration/sample-development.engine.ini
index 0804f7c7..f26b702f 100644
--- a/configuration/sample-development.engine.ini
+++ b/configuration/sample-development.engine.ini
@@ -39,7 +39,7 @@ heartbeat_port = 43334
 # Seconds how often the vitality of the Engine should be checked (0 = disabled)
 heartbeat_frequency = 1
 
-logdir="/home/david/Code/aura/engine/logs"
+logdir="/home/username/code/aura/engine/logs"
 # possible values: debug, info, warning, error, critical
 loglevel="info"
 
@@ -124,7 +124,7 @@ fade_out_time="2.5"
 # all these settings from here to the bottom require a restart of the liquidsoap server
 
 [lqs]
-liquidsoap_path="/home/david/.opam/4.08.0/bin/liquidsoap"
+liquidsoap_path="/home/username/.opam/4.08.0/bin/liquidsoap"
 liquidsoap_working_dir="modules/liquidsoap/"
 liquidsoap_as_root="false"
 
@@ -137,10 +137,10 @@ daemongroup="engineuser"
 daemonuser="engineuser"
 
 [socket]
-socketdir="/home/david/Code/aura/engine/modules/liquidsoap"
+socketdir="/home/username/code/aura/engine/modules/liquidsoap"
 
 [audiofolder]
-audiofolder="/home/david/Code/aura/tank-store"
+audiofolder="var/audio/source"
 
 [fallback]
 # track_sensitive => fallback_folder track sensitivity
@@ -150,13 +150,13 @@ audiofolder="/home/david/Code/aura/tank-store"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-50."
-
-# a folder holding music for station-fallbacks
-fallback_music_folder="/home/david/Music/Genres/beats-breaks-dub-down-hiphop"
-fallback_show_name="Random Music"
-fallback_show_type="Unmoderated Music"
-fallback_show_host="Magic Shuffle"
-fallback_title_not_available="Title not available"
+# A playlist holding music for Station Fallbacks (optonal)
+fallback_music_playlist= "/home/username/code/aura/configuration/playlists/station-fallback-playlist.m3u"
+# A folder holding music for Station Fallbacks (optional)
+fallback_music_folder="/var/audio/station"
+# The time in seconds how often the folder should be re-scanned
+# Do not reload to often when using large folders
+fallback_music_folder_reload="300"
 
 
 [soundcard]
diff --git a/configuration/sample-docker.engine.ini b/configuration/sample-docker.engine.ini
index 4fd544c6..1243e95d 100644
--- a/configuration/sample-docker.engine.ini
+++ b/configuration/sample-docker.engine.ini
@@ -148,13 +148,13 @@ audiofolder="/var/audio/source"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-50."
-
-# a folder holding music for station-fallbacks
-fallback_music_folder=""
-fallback_show_name="Random Music"
-fallback_show_type="Unmoderated Music"
-fallback_show_host="Magic Shuffle"
-fallback_title_not_available="Title not available"
+# A playlist holding music for Station Fallbacks (optonal)
+fallback_music_playlist= "/home/username/code/aura/configuration/playlists/station-fallback-playlist.m3u"
+# A folder holding music for Station Fallbacks (optional)
+fallback_music_folder="/var/audio/station"
+# The time in seconds how often the folder should be re-scanned
+# Do not reload to often when using large folders
+fallback_music_folder_reload="300"
 
 
 [soundcard]
diff --git a/configuration/sample-production.engine.ini b/configuration/sample-production.engine.ini
index 88f5fa1b..deae1d77 100644
--- a/configuration/sample-production.engine.ini
+++ b/configuration/sample-production.engine.ini
@@ -138,7 +138,7 @@ daemonuser="engineuser"
 socketdir="/opt/aura/engine/modules/liquidsoap"
 
 [audiofolder]
-audiofolder="/var/audio"
+audiofolder="/var/audio/source"
 
 [fallback]
 # track_sensitive => fallback_folder track sensitivity
@@ -148,13 +148,13 @@ audiofolder="/var/audio"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-50."
-
-# a folder holding music for station-fallbacks
-fallback_music_folder=""
-fallback_show_name="Random Music"
-fallback_show_type="Unmoderated Music"
-fallback_show_host="Magic Shuffle"
-fallback_title_not_available="Title not available"
+# A playlist holding music for Station Fallbacks (optonal)
+fallback_music_playlist= "/home/username/code/aura/configuration/playlists/station-fallback-playlist.m3u"
+# A folder holding music for Station Fallbacks (optional)
+fallback_music_folder="/var/audio/station"
+# The time in seconds how often the folder should be re-scanned
+# Do not reload to often when using large folders
+fallback_music_folder_reload="300"
 
 
 [soundcard]
diff --git a/modules/base/config.py b/modules/base/config.py
index 2a21052f..aec8eba3 100644
--- a/modules/base/config.py
+++ b/modules/base/config.py
@@ -30,7 +30,7 @@ class AuraConfig:
     """ 
     AuraConfig Class
     
-    Holds the Aura Configuration as in the file `engine.ini`.
+    Holds the Engine Configuration as in the file `engine.ini`.
     """
     ini_path = ""
     logger = None
@@ -50,6 +50,7 @@ class AuraConfig:
             ini_path = "%s/configuration/engine.ini" % Path(__file__).parent.parent.parent.absolute()
 
         self.ini_path = ini_path
+        self.set("config_dir", os.path.dirname(ini_path))
         self.logger = logging.getLogger("AuraEngine")
         self.load_config()
 
@@ -135,7 +136,6 @@ class AuraConfig:
         # Custom overrides and defaults
         self.set("install_dir", os.path.realpath(__file__ + "../../../.."))
         self.set("use_test_data", False)
-        self.set("api_prefix", "/api/v1")
 
 
 
diff --git a/modules/liquidsoap/settings.liq b/modules/liquidsoap/settings.liq
index 9451b15f..b4c65889 100644
--- a/modules/liquidsoap/settings.liq
+++ b/modules/liquidsoap/settings.liq
@@ -23,6 +23,8 @@ default_config = "../../configuration/engine.ini"
 config = list.hd(default=default_config, get_process_lines("ls /etc/aura/engine.ini"))
 log("Config file used: #{config}")
 ini = read_ini(config)
+engine_config_folder = string.split(separator="/engine.ini", config)
+engine_config_folder = list.nth(default="../../configuration/", engine_config_folder, 0)
 
 # ALLOW LIQUIDSOAP RUN AS ROOT
 lqs_allow_root = list.assoc(default="false", "liquidsoap_as_root", ini)
@@ -30,6 +32,9 @@ if lqs_allow_root == "true" then
     set("init.allow_root", true)
 end
 
+# BASICS
+set("console.colorize","always")
+
 # TELNET SETTINGS
 set("server.telnet", true)
 set("server.telnet.bind_addr", "0.0.0.0")
@@ -43,7 +48,6 @@ set("log.file.path", "#{log_dir}/engine-lqs.log")
 set("server.socket", true)
 set("server.socket.path", "./<script>.sock")
 
-
 #set("request.grace_time",2.)
 
 # SOUND CARD SETTINGS
@@ -63,12 +67,13 @@ a4_out = list.assoc(default="", "output_device_4", ini)
 input_stream_buffer = float_of_string(list.assoc(default="3.0", "input_stream_buffer", ini))
 
 # FALLBACK SETTINGS
+fallback_station_playlist_path = "#{engine_config_folder}/playlists/station-fallback-playlist.m3u"
+fallback_station_playlist_path = list.assoc(default=fallback_station_playlist_path, "fallback_music_playlist", ini)
+fallback_station_dir = list.assoc(default="/var/audio/station", "fallback_music_folder", ini)
+fallback_station_dir_reload = int_of_string(list.assoc(default="300", "fallback_music_folder_reload", ini))
 fallback_max_blank = float_of_string(list.assoc(default="", "fallback_max_blank", ini))
 fallback_min_noise = float_of_string(list.assoc(default="", "fallback_min_noise", ini))
 fallback_threshold = float_of_string(list.assoc(default="", "fallback_threshold", ini))
-#fallback_max_blank = list.assoc(default="", "fallback_max_blank", ini)
-#fallback_min_noise = list.assoc(default="", "fallback_min_noise", ini)
-#fallback_threshold = list.assoc(default="", "fallback_threshold", ini)
 
 # FADING SETTINGS
 fade_in_time = list.assoc(default="", "fade_in_time", ini) #int_of_string(list.assoc(default="", "fade_in_time", ini))
-- 
GitLab