init
This commit is contained in:
commit
a5ef6efd4d
|
@ -0,0 +1,3 @@
|
||||||
|
config/
|
||||||
|
config_deemix/
|
||||||
|
downloads/
|
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "lidarr-flac2mp3"]
|
||||||
|
path = lidarr-flac2mp3
|
||||||
|
url = https://github.com/youegraillot/lidarr-flac2mp3.git
|
|
@ -0,0 +1,19 @@
|
||||||
|
version: '3.4'
|
||||||
|
|
||||||
|
services:
|
||||||
|
lidarr-onsteroids:
|
||||||
|
image: lidarr-onsteroids
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=100
|
||||||
|
- AUTOCONFIG=true
|
||||||
|
ports:
|
||||||
|
- "8686:8686"
|
||||||
|
- "6595:6595"
|
||||||
|
volumes:
|
||||||
|
- ./config:/config
|
||||||
|
- ./config_deemix:/config_deemix
|
||||||
|
- ./downloads:/downloads
|
||||||
|
restart: unless-stopped
|
|
@ -0,0 +1,21 @@
|
||||||
|
FROM cr.hotio.dev/hotio/lidarr:pr-plugins
|
||||||
|
|
||||||
|
LABEL maintainer="youegraillot"
|
||||||
|
|
||||||
|
ENV DEEMIX_SINGLE_USER=true
|
||||||
|
ENV AUTOCONFIG=true
|
||||||
|
|
||||||
|
# flac2mp3
|
||||||
|
COPY lidarr-flac2mp3/root/usr /usr
|
||||||
|
RUN apk add --no-cache ffmpeg && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# deemix
|
||||||
|
COPY --from=registry.gitlab.com/bockiii/deemix-docker:latest /deemix-server /deemix-server
|
||||||
|
RUN chmod +x /deemix-server
|
||||||
|
VOLUME [ "/config_deemix" "/downloads" ]
|
||||||
|
EXPOSE 6595
|
||||||
|
|
||||||
|
COPY root /
|
||||||
|
VOLUME "/config"
|
||||||
|
EXPOSE 6595 8686
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 48aced2c6e02d0fffcbba5f2d50cc2eb0fcc57f8
|
|
@ -0,0 +1,82 @@
|
||||||
|
{
|
||||||
|
"downloadLocation": "/downloads/",
|
||||||
|
"tracknameTemplate": "%artist% - %title%",
|
||||||
|
"albumTracknameTemplate": "%tracknumber% - %title%",
|
||||||
|
"playlistTracknameTemplate": "%position% - %artist% - %title%",
|
||||||
|
"createPlaylistFolder": true,
|
||||||
|
"playlistNameTemplate": "%playlist%",
|
||||||
|
"createArtistFolder": true,
|
||||||
|
"artistNameTemplate": "%artist%",
|
||||||
|
"createAlbumFolder": true,
|
||||||
|
"albumNameTemplate": "%artist% - %album%",
|
||||||
|
"createCDFolder": true,
|
||||||
|
"createStructurePlaylist": true,
|
||||||
|
"createSingleFolder": true,
|
||||||
|
"padTracks": true,
|
||||||
|
"paddingSize": "0",
|
||||||
|
"illegalCharacterReplacer": "_",
|
||||||
|
"queueConcurrency": 3,
|
||||||
|
"maxBitrate": "9",
|
||||||
|
"feelingLucky": true,
|
||||||
|
"fallbackBitrate": true,
|
||||||
|
"fallbackSearch": false,
|
||||||
|
"fallbackISRC": false,
|
||||||
|
"logErrors": true,
|
||||||
|
"logSearched": false,
|
||||||
|
"overwriteFile": "n",
|
||||||
|
"createM3U8File": false,
|
||||||
|
"playlistFilenameTemplate": "playlist",
|
||||||
|
"syncedLyrics": false,
|
||||||
|
"embeddedArtworkSize": 800,
|
||||||
|
"embeddedArtworkPNG": false,
|
||||||
|
"localArtworkSize": 1200,
|
||||||
|
"localArtworkFormat": "jpg",
|
||||||
|
"saveArtwork": true,
|
||||||
|
"coverImageTemplate": "cover",
|
||||||
|
"saveArtworkArtist": false,
|
||||||
|
"artistImageTemplate": "folder",
|
||||||
|
"jpegImageQuality": 90,
|
||||||
|
"dateFormat": "Y-M-D",
|
||||||
|
"albumVariousArtists": true,
|
||||||
|
"removeAlbumVersion": false,
|
||||||
|
"removeDuplicateArtists": true,
|
||||||
|
"featuredToTitle": "0",
|
||||||
|
"titleCasing": "nothing",
|
||||||
|
"artistCasing": "nothing",
|
||||||
|
"executeCommand": "",
|
||||||
|
"tags": {
|
||||||
|
"title": true,
|
||||||
|
"artist": true,
|
||||||
|
"artists": true,
|
||||||
|
"album": true,
|
||||||
|
"cover": true,
|
||||||
|
"trackNumber": true,
|
||||||
|
"trackTotal": true,
|
||||||
|
"discNumber": true,
|
||||||
|
"discTotal": true,
|
||||||
|
"albumArtist": true,
|
||||||
|
"genre": true,
|
||||||
|
"year": true,
|
||||||
|
"date": true,
|
||||||
|
"explicit": true,
|
||||||
|
"isrc": true,
|
||||||
|
"length": true,
|
||||||
|
"barcode": true,
|
||||||
|
"bpm": true,
|
||||||
|
"replayGain": true,
|
||||||
|
"label": true,
|
||||||
|
"lyrics": true,
|
||||||
|
"syncedLyrics": true,
|
||||||
|
"copyright": true,
|
||||||
|
"composer": true,
|
||||||
|
"involvedPeople": true,
|
||||||
|
"source": true,
|
||||||
|
"rating": false,
|
||||||
|
"savePlaylistAsCompilation": false,
|
||||||
|
"useNullSeparator": false,
|
||||||
|
"saveID3v1": true,
|
||||||
|
"multiArtistSeparator": "default",
|
||||||
|
"singleAlbumArtist": false,
|
||||||
|
"coverDescriptionUTF8": false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
UMASK_SET=${UMASK_SET:-022}
|
||||||
|
umask "$UMASK_SET"
|
||||||
|
|
||||||
|
cd /
|
||||||
|
|
||||||
|
# Check if an alternative port was defined, set it to it or default
|
||||||
|
if [ -n "${INTPORT}" ]; then
|
||||||
|
port=$INTPORT
|
||||||
|
else
|
||||||
|
port=6595
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the ARL environment var is set to anything. This enables legacy behavior
|
||||||
|
if [ -n "${ARL}" ]; then
|
||||||
|
export DEEMIX_SINGLE_USER=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
export DEEMIX_DATA_DIR=/config_deemix/
|
||||||
|
export DEEMIX_MUSIC_DIR=/downloads/
|
||||||
|
export DEEMIX_SERVER_PORT=$port
|
||||||
|
export DEEMIX_HOST=0.0.0.0
|
||||||
|
|
||||||
|
if [ ! -f $DEEMIX_DATA_DIR/config.json ] && [ "$AUTOCONFIG" = "true" ]; then
|
||||||
|
echo "[services.d] Copying deemix configuration"
|
||||||
|
cp -f /etc/services.d/deemix/config.json $DEEMIX_DATA_DIR/config.json
|
||||||
|
fi
|
||||||
|
chown -R "$PUID:$PGID" /config_deemix
|
||||||
|
|
||||||
|
echo "[services.d] Starting Deemix"
|
||||||
|
s6-setuidgid "$PUID:$PGID" /deemix-server
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
# shellcheck shell=sh
|
||||||
|
|
||||||
|
SUPERVISED_DIR=/var/run/s6/services
|
||||||
|
|
||||||
|
# hack: this is run-once service
|
||||||
|
# stop the s6-supervise process and ensure that its not started again
|
||||||
|
s6-svc -x ${SUPERVISED_DIR}/setup
|
||||||
|
rm -rf ${SUPERVISED_DIR}/setup
|
||||||
|
s6-svscanctl -a ${SUPERVISED_DIR}
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
# shellcheck shell=sh
|
||||||
|
|
||||||
|
echo "
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Flac2MP3 SETUP
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
PUID=$PUID
|
||||||
|
PGID=$PGID
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
"
|
||||||
|
|
||||||
|
if [ "$(stat -c '%g' /usr/local/bin/flac2mp3.sh)" != "$PGUID" ]; then
|
||||||
|
echo "Changing ownership on scripts."
|
||||||
|
chown "$PUID:$PGID" /usr/local/bin/flac2*.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x /usr/local/bin/flac2mp3.sh ]; then
|
||||||
|
echo "Making scripts executable."
|
||||||
|
chmod +x /usr/local/bin/flac2*.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
LIDARR SETUP
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Source=$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
|
||||||
|
loginPath="/config_deemix/login.json"
|
||||||
|
echo "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"
|
||||||
|
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"
|
||||||
|
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"
|
||||||
|
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"
|
||||||
|
fi
|
Loading…
Reference in New Issue