Lidarr arr-scripts configuration

This commit is contained in:
Mike Wilson
2025-06-27 13:39:46 -04:00
parent 260a40ceb2
commit c1ae312ea3
6 changed files with 143 additions and 4 deletions

View File

@@ -13,7 +13,7 @@
- ntfy - ntfy
- gluetun - gluetun
- autobrr - autobrr
- name: recyclarr - name: lidarr
tags: test tags: test
- beets - beets
- qbittorrent - qbittorrent
@@ -31,7 +31,7 @@
- unifi-controller - unifi-controller
- slskd - slskd
- navidrome - navidrome
- lidarr - recyclarr
- lubelogger - lubelogger
- searxng - searxng
- synapse - synapse

View File

@@ -0,0 +1,5 @@
#!/usr/bin/with-contenv bash
set -euo pipefail
curl -sfL https://raw.githubusercontent.com/RandomNinjaAtk/arr-scripts/main/lidarr/setup.bash | bash
exit

View File

@@ -24,6 +24,32 @@
validate: docker compose -f %s config validate: docker compose -f %s config
become: true become: true
- name: Create data directory
ansible.builtin.file:
path: "{{ data_dir }}/{{ item }}"
state: directory
owner: "{{ service_user.uid }}"
group: "{{ primary_gid }}"
mode: "{{ docker_compose_directory_mask }}"
become: true
loop:
- "{{ role_name }}/config"
- "{{ role_name }}/custom-services"
- "{{ role_name }}/custom-cont"
- name: Copy arr-scripts init script
ansible.builtin.copy:
src: "scripts_init.bash"
dest: "{{ data_dir }}/{{ role_name }}/custom-cont"
owner: "{{ service_user.uid }}"
mode: 0564
become: true
- name: Copy extended.conf
ansible.builtin.template:
src: "extended.conf"
dest: "{{ data_dir }}/{{ role_name }}/config"
- name: Start docker container - name: Start docker container
community.docker.docker_compose_v2: community.docker.docker_compose_v2:
project_src: "{{ install_directory }}/{{ role_name }}" project_src: "{{ install_directory }}/{{ role_name }}"

View File

@@ -1,4 +1,3 @@
networks: networks:
traefik: traefik:
external: true external: true
@@ -16,8 +15,11 @@ services:
- "TZ={{ timezone }}" - "TZ={{ timezone }}"
- "UMASK=002" - "UMASK=002"
volumes: volumes:
- "{{ data_dir }}/{{ role_name }}:/config" - "{{ data_dir }}/{{ role_name }}/config:/config"
- "{{ media_storage_mnt }}/data:/data" - "{{ media_storage_mnt }}/data:/data"
# arr-scripts - https://github.com/RandomNinjaAtk/arr-scripts/blob/main/lidarr/readme.md
- "{{ data_dir }}/{{ role_name }}/custom-services:/custom-services.d"
- "{{ data_dir }}/{{ role_name }}/custom-cont:/custom-cont-init.d"
labels: labels:
traefik.enable: true traefik.enable: true
traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)" traefik.http.routers.{{ role_name }}.rule: "Host(`{{ role_name }}.local.{{ personal_domain }}`)"

View File

@@ -0,0 +1,89 @@
##### LIDARR EXTENDED SCRIPTS SETTINGS #####
##### PATHS
downloadPath="/config/extended/downloads" # OPTIONAL, only change if needed.... Temporary Download Location for incoming Audio files from included clients
importPath="/config/extended/import" # OPTIONAL, only change if needed.... Completed downloads are stored here for the Usenet Blackhole client to import from. When Using queue cleaner, failed imports will be automatically cleaned up.
videoPath="" # Final destination/location of completed Videos
##### SCRIPT ENABLEMENT
enableAutoConfig="true" # true = enabled :: Automatically configures Lidarr with optimal settings
enableAudio="true" # true = enabled :: Enables the Audio script to run automatically
enableVideo="false" # true = enabled :: Enables the Video script to run automatically
enableUnmappedFilesCleaner="false" # true = enabled :: Enables the UnmappedFilesCleaner script to run automatically
enableQueueCleaner="true" # true = enabled :: Enables the QueueCleaner script to run automatically
##### SCRIPT INTERVALS
audioScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
videoScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
autoArtistAdderInterval=12h #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
unmappedFolderCleanerScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
queueCleanerScriptInterval=15m #s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when script is enabled
##### AUTOCONFIG SCRIPT SETTINGS
configureMediaManagement="true" # Configures Lidarr Media Management Settings
configureMetadataConsumerSettings="false" # Configures Lidarr Metadata Consumer Settings
configureMetadataProviderSettings="false" # Configures Lidarr Metadata Provider Settings
configureCustomScripts="true" # Adds custom scripts to Lidarr
configureLidarrUiSettings="true" # Configures Lidarr UI Settings
configureMetadataProfileSettings="false" # Configures Lidarr Metadata Profile Settings
configureTrackNamingSettings="true" # Configures Lidarr Track Naming Settings
##### AUDIO SCRIPT
# SEARCH
searchSort="date" # date or album :: Sorts the missing/cutoff list by release date (newest -> oldest) or album type (album -> single) for processing the list
matchDistance="3" # The number of changes required to transform the searched album title into a possible found album title match... (0, requires a perfect match)
lidarrSearchForMissing="false" # true = enabled :: When artists are added, search for them using Lidarr's built in functionality
retryNotFound="90" ## :: Number of days between re-attempting the download of previously notfound albums
ignoreInstrumentalRelease="false" # true = enabled :: Skips albums releases that have the word "instrumental" in either the title or disambiguation
preferSpecialEditions="true" # true = enabled :: This changes the release title sort order, when true, it will search for releases with longest release names first, which are more likely to be deluxe/special versions...
# CLIENT
dlClientSource="deezer" # deezer, tidal or both :: set to both, to use both clients, tidal requires extra steps, view logging output
arlToken="{{ deezer_arl }}" # OPTIONAL (fallback using Freyr) - User ARL token for deemix client
tidalCountryCode="US" # Country Code required for tidal
failedDownloadAttemptThreshold="6" # Maximum number of attempts to download a particular album ID from the service before considering it a failed download...
deezerClientTestDownloadId="197472472" # A known good deezer track id that is used to test/verify the client is functioning in the event all download attempts have failed. Prevents the script from exiting...
tidalClientTestDownloadId="166356219" # A known good tidal track id that is used to test/verify the client is functioning in the event all download attempts have failed. Prevents the script from exiting...
downloadClientTimeOut="10m" # 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days :: Kills freyr download client after the set timeout period, prevents lock ups...
# QUALITY
audioLyricType="both" # both or explicit or clean :: both, is explicit preferred matching, explicit is explicit releases only matching and clean is clean releases only matching
audioFormat="native" # native or alac or mp3 or aac or opus :: native is the native download client file type, selected by the matching audio bit-rate
audioBitrate="lossless" # master or lossless or high or low or ### :: master = MQA/lossless flac files, lossless = flac files, high = 320K, low = 128k/96k, ### = the output bit-rate of converted lossless files to selected audioFormat that is not native, example: 192...
requireQuality="true" # true = enabled :: Downloads will be checked for quality and require to have the requested file format & quality
# POST PROCESSING
enableBeetsTagging="true" # true = enabled :: Downloads will be processed and tagged by Beets
beetsMatchPercentage="90" # 1-100 :: Set this to the minimum percentage required for Beets to match the downloaded album to a musicbrainz release :: Lower percentage is less restrictive
enableReplaygainTags="true" # true = enabled :: Downloads will be tagged with ReplayGain Metadata
# ADD ARTIST AUTOMATION
addDeezerTopArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Artist Chart to your existing Lidarr instance
addDeezerTopAlbumArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Album Chart to your existing Lidarr instance
addDeezerTopTrackArtists="false" # true = enabled :: Enabling this will enable the extended script to automatically add artists that are on the Deezer Top Track Chart to your existing Lidarr instance
topLimit="3" # This setting controls the amount of Top Artist (Albums/Tracks/Artists) to add to Lidarr from Deezer
addRelatedArtists="false" # true = enabled :: WARNING !!! WARNING !!! Enabling this can cause an endless loop of additional artists.... Enabling this will enable the extended script to automatically add artists that are related to your existing Lidarr artists from Tidal & Deezer
numberOfRelatedArtistsToAddPerArtist="1" # 1-20 :: This will limit the number of related artists to add per artist in your library :: Minimum is 1, Maximum is 20
autoArtistAdderMonitored="true" # true or false :: If true, artists that are added automatically are monitored, when false they are added in an unmonitored state
preventRelatedArtistsLoop="true" # true = enabled :: This will prevent added related artists from adding additional related artists, thus killing an endless loop. This works by using the Lidarr's tag system (arr-extended), Remove tag from artist to allow it to be proessed for related artists...
##### VIDEO SCRIPT
addFeaturedVideoArtists="false" # true = enabled :: WARNING !!! WARNING !!! Enabling this can cause an endless loop of additional artists.... Enabling this will enable the extended Video script to automatically add Music Video Featured Artists to your existing Lidarr artists from IMVDB
videoFormat="bv[width>=1920]+ba" # ONLY CHANGE if you know what your doing, for guidence, please see yt-dlp documentation.
videoInfoJson="false" # true = enabled :: Stores yt-dlp info-json files alongside video files.
youtubeSubtitleLanguage="en" # Desired Language Code :: For guidence, please see yt-dlp documentation.
disableImvd="false" # true = enabled :: Use this to disable IMVDB as a source, will result in only tidal videos
##### DEEZER ARLCHECKER
arlUpdateInterval="24h" # Interval to check ARL Validity (default 24 hours). Reboot container after changing. s = seconds, m = minutes, h = hours, d = days
telegramBotEnable="false" # Enable/Disable Telegram Bot to notify if ARL expires. Otherwise check text file in custom-services.d/python for status.
telegramBotToken="" # Get token from BotFather during bot creation. If you use a notify channel for Lidarr, you can probably use the same bot, as this script only takes temporary control.
telegramUserChatID="" # Get your userid by chatting: t.me/userinfobot
pushoverEnable="false" # Pushover Notification Support
pushoverUserKey=""
pushoverAppAPIKey=""
ntfyEnable="false" # ntfy Notification Support
ntfyServerTopic="" # Put your server + topic address ex: https://ntfy.mydomain.com/lidarr
ntfyUserToken="" # create a new user token using the ntfy cli commands. See ntfy documentation on how to do that.

View File

@@ -0,0 +1,17 @@
deezer_arl: !vault |
$ANSIBLE_VAULT;1.1;AES256
30376434343866323037636662633839313731316533636463383031353462346337626337376563
3334356436383831353265663266666631356131386139310a333066363932643363386139396437
62333561623365336163663062663035383335336465333031306165633539343663333462313362
6634396266386466340a336162626636633531363738353561363030316133386163316135613538
64326563336665333566616163366263663763313764613636643931393862333166333332323139
65653234663836346538636264613637346662636566666364393165313863333939326538663632
38363438356234363639373162633762383139373838376137366333663166326165616663393039
34343863666163393164653937663931626434626562306333313665306332313865636462613030
36343930323861366235636535646662643561666663656165303031346631396239623531386365
39633063363934316637663139396461326533626362363730613562306163663163306665623233
38323763653064303631303566653736333237643031626266343036333938636635653132636661
64636438653933363335343431383162366636393834396639363266653963316431333138353638
61656535363734303139323964303336353032663635366131313866373033666662393130393132
3637393263373761646366376532613761613039633465633432