From 8484c4ea463da1480de0301a49cc83cfd88c9df2 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Thu, 17 Dec 2020 12:51:34 +0100
Subject: [PATCH] Consolidation of fallback playlist and folder. #66

---
 Dockerfile                           |  2 ++
 config/sample-development.engine.ini |  8 ++++----
 config/sample-docker.engine.ini      |  8 ++++----
 config/sample-production.engine.ini  |  8 ++++----
 docs/installation-development.md     |  7 ++++---
 docs/installation-production.md      |  5 +++--
 docs/setup-audio-store.md            |  4 ++--
 run.sh                               |  2 ++
 src/liquidsoap/settings.liq          | 10 ++++++++--
 9 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 14a3f653..a6d7e29a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -24,6 +24,8 @@ RUN whoami
 RUN mkdir -p /srv
 RUN mkdir -p /var/audio
 RUN mkdir -p /var/audio/source
+RUN mkdir -p /var/audio/station
+RUN mkdir -p /var/audio/playlist
 COPY . /srv
 WORKDIR /srv
 RUN pip3 install -r requirements.txt
diff --git a/config/sample-development.engine.ini b/config/sample-development.engine.ini
index 919cc076..247ef977 100644
--- a/config/sample-development.engine.ini
+++ b/config/sample-development.engine.ini
@@ -132,9 +132,9 @@ daemonuser="engineuser"
 socketdir="/home/username/code/aura/engine/src/liquidsoap"
 
 [audiosources]
-audio_source_folder="var/audio/source"
+audio_source_folder="/var/audio/source"
 audio_source_extension=".flac"
-audio_playlist_folder="var/audio/playlist"
+audio_playlist_folder="/var/audio/playlist"
 
 [fallback]
 # track_sensitive => fallback_folder track sensitivity
@@ -144,8 +144,8 @@ audio_playlist_folder="var/audio/playlist"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-80."
-# A playlist holding music for Station Fallbacks (optonal)
-fallback_music_playlist= "/home/username/code/aura/config/playlists/station-fallback-playlist.m3u"
+# A playlist holding music for Station Fallbacks (optional)
+fallback_music_playlist= "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
diff --git a/config/sample-docker.engine.ini b/config/sample-docker.engine.ini
index b23d5d4a..c6449a70 100644
--- a/config/sample-docker.engine.ini
+++ b/config/sample-docker.engine.ini
@@ -131,9 +131,9 @@ daemonuser="engineuser"
 socketdir="/srv/src/liquidsoap"
 
 [audiosources]
-audio_source_folder="var/audio/source"
+audio_source_folder="/var/audio/source"
 audio_source_extension=".flac"
-audio_playlist_folder="var/audio/playlist"
+audio_playlist_folder="/var/audio/playlist"
 
 [fallback]
 # track_sensitive => fallback_folder track sensitivity
@@ -143,8 +143,8 @@ audio_playlist_folder="var/audio/playlist"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-80."
-# A playlist holding music for Station Fallbacks (optonal)
-fallback_music_playlist= "/opt/aura/engine/config/playlists/station-fallback-playlist.m3u"
+# A playlist holding music for Station Fallbacks (optional)
+fallback_music_playlist= "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
diff --git a/config/sample-production.engine.ini b/config/sample-production.engine.ini
index b8fc44e9..6f08a197 100644
--- a/config/sample-production.engine.ini
+++ b/config/sample-production.engine.ini
@@ -131,9 +131,9 @@ daemonuser="engineuser"
 socketdir="/opt/aura/engine/src/liquidsoap"
 
 [audiosources]
-audio_source_folder="var/audio/source"
+audio_source_folder="/var/audio/source"
 audio_source_extension=".flac"
-audio_playlist_folder="var/audio/playlist"
+audio_playlist_folder="/var/audio/playlist"
 
 [fallback]
 # track_sensitive => fallback_folder track sensitivity
@@ -143,8 +143,8 @@ audio_playlist_folder="var/audio/playlist"
 fallback_max_blank="20."
 fallback_min_noise="0."
 fallback_threshold="-80."
-# A playlist holding music for Station Fallbacks (optonal)
-fallback_music_playlist= "/opt/aura/engine/config/playlists/station-fallback-playlist.m3u"
+# A playlist holding music for Station Fallbacks (optional)
+fallback_music_playlist= "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
diff --git a/docs/installation-development.md b/docs/installation-development.md
index f432dd31..d24a6822 100644
--- a/docs/installation-development.md
+++ b/docs/installation-development.md
@@ -170,12 +170,13 @@ Ensure that the Liquidsoap installation path is valid:
 liquidsoap_path="/home/david/.opam/4.08.0/bin/liquidsoap"
 ```
 
-Finally Engine needs to be able to access the audio folder, where all the tracks of the playlists
-are stored via *Tank*:
+Finally Engine needs to be able to access the audio and playlist folders, where all the tracks of the playlists are stored via *Tank*:
 
 ```ini
 [audiosource]
-audio_source_folder="/var/audio"
+audio_source_folder="/var/audio/source"
+audio_source_extension=".flac"
+audio_playlist_folder="/var/audio/playlist"
 ```
 
 If the audio device desired for playback is set as `default`, the Engine now should be ready to play
diff --git a/docs/installation-production.md b/docs/installation-production.md
index 06da73dc..d4398e8b 100644
--- a/docs/installation-production.md
+++ b/docs/installation-production.md
@@ -198,12 +198,13 @@ liquidsoap_path="/home/engineuser/.opam/4.08.0/bin/liquidsoap"
 
 **Configuring the Audio Store**
 
-Finally Engine needs to be able to access the audio folder, where all the tracks of the playlists
-are stored via *Tank*:
+Finally Engine needs to be able to access the audio and playlist folders, where all the tracks of the playlists are stored via *Tank*:
 
 ```ini
 [audiosource]
 audio_source_folder="/var/audio/source"
+audio_source_extension=".flac"
+audio_playlist_folder="/var/audio/playlist"
 ```
 
 There is some document on how to [Setup the Audio Store](docs/setup-audio-store.md).
diff --git a/docs/setup-audio-store.md b/docs/setup-audio-store.md
index a86d4d0b..30843e11 100644
--- a/docs/setup-audio-store.md
+++ b/docs/setup-audio-store.md
@@ -120,7 +120,7 @@ user_allow_other
 Now create the mount:
 
 ```shell
-sudo sshfs -o allow_other -o IdentityFile=~/.ssh/id_rsa tankuser@192.168.0.111:/var/audio /opt/aura/audio-store -p22
+sudo sshfs -o allow_other -o IdentityFile=~/.ssh/id_rsa tankuser@192.168.0.111:/var/audio/source /opt/aura/audio-store -p22
 ```
 
 Replace `192.168.0.111` with the actual IP for your Engine and `-p22` with the actual port number your Engine's SSH service
@@ -131,7 +131,7 @@ in the `/etc/fstab` file by adding this at the end:
 
 ```yaml
 # Audio Store @ AURA Engine
-sshfs#tankuser@192.168.0.111:/var/audio /opt/aura/audio-store fuse auto,port=22,identityfile=~/.ssh/id_rsa,allow_other,_netdev 0 0
+sshfs#tankuser@192.168.0.111:/var/audio/source /opt/aura/audio-store fuse auto,port=22,identityfile=~/.ssh/id_rsa,allow_other,_netdev 0 0
 
 ```
 
diff --git a/run.sh b/run.sh
index ce631ee3..303a2790 100755
--- a/run.sh
+++ b/run.sh
@@ -99,6 +99,8 @@ if [[ $docker == "true" ]]; then
 			-u $UID:$GID \
 			-v "$BASE_D":/srv \
 			-v "$BASE_D/audio/source":/var/audio/source:ro \
+			-v "$BASE_D/audio/station":/var/audio/station:ro \
+			-v "$BASE_D/audio/playlist":/var/audio/playlist:ro \
 			-v "$BASE_D/config/docker":/etc/aura \
 			-v "/dev/snd":/dev/snd \
 			--privileged \
diff --git a/src/liquidsoap/settings.liq b/src/liquidsoap/settings.liq
index b8fe0976..eff5ac42 100644
--- a/src/liquidsoap/settings.liq
+++ b/src/liquidsoap/settings.liq
@@ -66,9 +66,15 @@ a4_out = list.assoc(default="", "output_device_4", ini)
 
 input_stream_buffer = float_of_string(list.assoc(default="3.0", "input_stream_buffer", ini))
 
+# AUDIO AND PLAYLIST SOURCES
+audio_playlist_folder = "#{engine_config_folder}/playlists"
+audio_playlist_folder = list.assoc(default=audio_playlist_folder, "audio_playlist_folder", 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_playlist_name = "station-fallback-playlist.m3u"
+fallback_station_playlist_name = list.assoc(default=fallback_station_playlist_name, "fallback_music_playlist", ini)
+fallback_station_playlist_path = "#{audio_playlist_folder}/#{fallback_station_playlist_name}"
+
 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))
-- 
GitLab