From f31106e1db18c74b0f3d25b85ae4554ead8eeea6 Mon Sep 17 00:00:00 2001 From: Youe Graillot Date: Fri, 15 Jul 2022 14:22:04 +0200 Subject: [PATCH] root folder creation --- .gitignore | 1 + docker-compose.yml | 5 +- dockerfile | 6 ++- root/etc/services.d/setup/run | 86 ++++++++++++++++++----------------- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index a0aa6fd..bb27cbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config/ config_deemix/ downloads/ +music/ diff --git a/docker-compose.yml b/docker-compose.yml index 76a3887..85e97aa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,10 +5,6 @@ services: image: lidarr-onsteroids build: context: . - environment: - - PUID=1000 - - PGID=100 - - AUTOCONFIG=true ports: - "8686:8686" - "6595:6595" @@ -16,4 +12,5 @@ services: - ./config:/config - ./config_deemix:/config_deemix - ./downloads:/downloads + - ./music:/music restart: unless-stopped diff --git a/dockerfile b/dockerfile index 3f8f96f..4a929f8 100644 --- a/dockerfile +++ b/dockerfile @@ -4,6 +4,8 @@ LABEL maintainer="youegraillot" ENV DEEMIX_SINGLE_USER=true ENV AUTOCONFIG=true +ENV PUID=1000 +ENV PGID=1000 # flac2mp3 COPY lidarr-flac2mp3/root/usr /usr @@ -13,9 +15,9 @@ RUN apk add --no-cache ffmpeg && \ # deemix COPY --from=registry.gitlab.com/bockiii/deemix-docker:latest /deemix-server /deemix-server RUN chmod +x /deemix-server -VOLUME [ "/config_deemix" "/downloads" ] +VOLUME "/config_deemix" "/downloads" EXPOSE 6595 COPY root / -VOLUME "/config" +VOLUME "/config" "/music" EXPOSE 6595 8686 diff --git a/root/etc/services.d/setup/run b/root/etc/services.d/setup/run index c1232af..802d9ec 100644 --- a/root/etc/services.d/setup/run +++ b/root/etc/services.d/setup/run @@ -1,6 +1,26 @@ #!/usr/bin/with-contenv sh # shellcheck shell=sh +url="http://localhost:8686" +urlPlugin="https://github.com/ta264/Lidarr.Plugin.Deemix" + +# string, route +isPresent() { + apiCall "GET" "$2" | grep -q "$1" +} + +# method, route, payload +apiCall() { + curl \ + -s \ + -X "$1" \ + -H "Content-Type: application/json" \ + -H "X-Api-Key: $apiKey" \ + -d "$3" \ + $url/api/v1/"$2" + return 0 +} + echo " ---------------------------------------------------------------------- Flac2MP3 SETUP @@ -24,66 +44,50 @@ echo " ---------------------------------------------------------------------- LIDARR SETUP ---------------------------------------------------------------------- -Source=$urlPlugin +PluginSource=$urlPlugin ---------------------------------------------------------------------- " - -url="http://localhost:8686" -urlPlugin="https://github.com/ta264/Lidarr.Plugin.Deemix" - -# string, route -isPresent() { - apiCall "GET" "$2" | grep -q "$1" -} - -# method, route, payload -apiCall() { - curl \ - -sS \ - -X "$1" \ - -H "Content-Type: application/json" \ - -H "X-Api-Key: $apiKey" \ - -d "$3" \ - $url/api/v1/"$2" - return 0 -} - -apiKey="$(curl \ - -sS \ - --retry-all-errors \ - --retry 10 \ - $url/initialize.js | - sed -n "s/apiKey: '\(.*\)'.*/\1/p")" - -if isPresent $urlPlugin "system/plugins"; then - echo "Plugin already installed" -else - echo "Installing plugin" - apiCall "POST" "command" '{"name":"InstallPlugin","githubUrl":"'$urlPlugin'"}' -fi - if [ "$AUTOCONFIG" = "true" ]; then + echo "[autoconfig] Waiting Lidarr to launch on 8686..." + while ! nc -z localhost 8686; do + sleep 0.1 + done + apiKey="$(curl \ + -sS \ + --retry-all-errors \ + --retry 10 \ + $url/initialize.js | + sed -n "s/apiKey: '\(.*\)'.*/\1/p")" + + if ! isPresent $urlPlugin "system/plugins"; then + echo "[autoconfig] Installing plugin" + apiCall "POST" "command" '{"name":"InstallPlugin","githubUrl":"'$urlPlugin'"}' + fi + if ! isPresent "path" "rootFolder"; then + echo "[autoconfig] Setting /music rootFolder" + apiCall "POST" "rootFolder" '{"defaultTags":[],"defaultQualityProfileId":1,"defaultMetadataProfileId":1,"path":"/music","name":"Music"}' + fi loginPath="/config_deemix/login.json" - echo "Waiting for $loginPath to be filled..." + echo "[autoconfig] Waiting for $loginPath to be filled..." while [ -z "$arl" ]; do sleep 1 arl=$(sed -n 's/.*arl.*"\(.*\)"/\1/p' "$loginPath" 2>/dev/null) done if [ "$(apiCall "GET" "delayprofile" | jq .[0].items[2].allowed)" = "false" ]; then - echo "Allowing Deemix in default delay profile" + echo "[autoconfig] Allowing Deemix in default delay profile" apiCall "PUT" "delayprofile/1" \ '{"name":"Default","items":[{"name":"Usenet","protocol":"UsenetDownloadProtocol","allowed":true,"delay":0},{"name":"Torrent","protocol":"TorrentDownloadProtocol","allowed":true,"delay":0},{"name":"Deemix","protocol":"DeemixDownloadProtocol","allowed":true,"delay":0}],"tags":[],"id":1}' fi if ! isPresent "Deemix" "indexer"; then loginPath="/config_deemix/login.json" - echo "Updating indexer" + echo "[autoconfig] Updating indexer" apiCall "POST" "indexer" \ '{"enableRss":true,"enableAutomaticSearch":true,"enableInteractiveSearch":true,"supportsRss":true,"supportsSearch":true,"protocol":"DeemixDownloadProtocol","priority":25,"downloadClientId":0,"name":"Deemix","fields":[{"name":"baseUrl","value":"http://localhost:6595"},{"name":"arl","value":"'"$arl"'"},{"name":"earlyReleaseLimit"}],"implementationName":"Deemix","implementation":"Deemix","configContract":"DeemixIndexerSettings","infoLink":"https://wiki.servarr.com/lidarr/supported#deemix","tags":[]}' fi if ! isPresent "Deemix" "downloadclient"; then - echo "Updating download client" + echo "[autoconfig] Updating download client" apiCall "POST" "downloadclient" \ '{"enable":true,"protocol":"DeemixDownloadProtocol","priority":1,"removeCompletedDownloads":true,"removeFailedDownloads":true,"name":"Deemix","fields":[{"name":"host","value":"localhost"},{"name":"port","value":6595},{"name":"urlBase"},{"name":"useSsl","value":false},{"name":"arl","value":"'"$arl"'"}],"implementationName":"Deemix","implementation":"Deemix","configContract":"DeemixSettings","infoLink":"https://wiki.servarr.com/lidarr/supported#deemix","tags":[]}' fi - echo "Configuration is up to date" + echo "[autoconfig] Configuration is up to date" fi