Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lidarr Beets & AMD & AMVD Docker Mod #6

Open
Protektor-Desura opened this issue Jul 30, 2022 · 2 comments
Open

Lidarr Beets & AMD & AMVD Docker Mod #6

Protektor-Desura opened this issue Jul 30, 2022 · 2 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Protektor-Desura
Copy link
Owner

I would like to request help creating a Beets docker mode to Lidarr to allow automatic tagging and automatic converting of files.

@Protektor-Desura Protektor-Desura added help wanted Extra attention is needed enhancement New feature or request labels Jul 30, 2022
@Protektor-Desura
Copy link
Owner Author

Protektor-Desura commented Aug 1, 2022

Note: These are based on Linuxserver.io images

  1. We need to create a 90-config file that will download a docker binary so that lidarr can call commands in a different container

-----------------------------90-config----------------------------------

#!/usr/bin/with-contenv bash

DOCKERVERSION=20.10.9
curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKERVERSION}.tgz \
  && tar xzvf docker-${DOCKERVERSION}.tgz --strip 1 \
                 -C /usr/local/bin docker/docker \
  && rm docker-${DOCKERVERSION}.tgz

  1. Then we need to add two volumes to lidarr server in docker-compose. The 90-config for the docker binary and the docker socket.
    • /some/path/to/config/90-config:/etc/cont-init.d/90-config
    • /var/run/docker.sock:/var/run/docker.sock

Also /music is both the root volume for my music in both beets and lidarr. It can be whatever you want but for this to work they both need to have the same path in their respective containers so that when lidarr calls beets, its the same path structure.

  1. Add this in the lidarr container somehow (I just have mine in the config folder). This will trigger beet import and tell lidarr to run an update. Note: You may need to change the lidarr port if you have changed it.

-----------------------------beet_import.sh----------------------------------

#!/bin/bash

#Get Destination Folder
lidarr_first_track=$(echo "$lidarr_addedtrackpaths" | cut -d '|' -f1)
lidarr_album_path=$(dirname "$lidarr_first_track")

#Trigger Beets
docker --config "/config/.docker" exec -u abc beets /bin/bash -c "beet update" && sleep 3
docker --config "/config/.docker" exec -u abc beets /bin/bash -c "beet import -q '$lidarr_album_path'"

#Update Lidarr
FILE=/config/config.xml
until test -f $FILE; do sleep 1; done
API=`grep -oP '(?<=<ApiKey>)(.*)(?=<\/ApiKey>)' /config/config.xml`
curl -s "http://localhost:8686/music/api/v1/command?apikey=$API" -X POST -d "{'name': 'ReScanArtist', 'artistID': $lidarr_artist_id}" > /dev/null

  1. In lidarr, go to Settings > Connect > Add > Custom Script. Select On Release Import. Point the path to beet_import.sh

Optional:

  1. I have Beets convert the music and rename so I have lidarr renaming tracks with an additional underscore in the track name

    {track:00}_{Track Title}

so that when it gets to beets, it doesn't accidentally remove the wrong file. I think it might be overkill since beets converts to temp folder and then copies. Then in beets config I have the naming structure to

$track - $title
  1. I was having issues with the docker socket permissions in a container. Looked online and people said that this was one of the better ways to handle it. I added this to my host's cronjob

@reboot setfacl -m user:MY_USER_THAT_RUNS_DOCKERS:rw /var/run/docker.sock

@Protektor-Desura Protektor-Desura changed the title Beets Docker Mod Lidarr Beets & AMD & AMVD Docker Mod Aug 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant