From b390ac2dfdca1765330c87df743f808c6664f433 Mon Sep 17 00:00:00 2001 From: Tim Moore <1232390+angusmaul@users.noreply.github.com> Date: Wed, 14 Oct 2026 09:36:28 +1100 Subject: [PATCH 1/2] Add Lidify --- ct/lidify.sh | 66 +++++++++++++++++++++++++++++++++++++++ install/lidify-install.sh | 53 +++++++++++++++++++++++++++++++ json/lidify.json | 45 ++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 ct/lidify.sh create mode 100644 install/lidify-install.sh create mode 100644 json/lidify.json diff --git a/ct/lidify.sh b/ct/lidify.sh new file mode 100644 index 0000000000..02abf6655f --- /dev/null +++ b/ct/lidify.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/DevScripts/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Tim Moore (angusmaul) +# License: MIT | https://github.com/community-scripts/DevScripts/raw/main/LICENSE +# Source: https://github.com/TheWicklowWolf/Lidify + +APP="Lidify" +var_tags="${var_tags:-arr;music}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-1024}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/lidify ]]; then + msg_error "No Lidify Installation Found!" + exit + fi + + if check_for_gh_release "lidify" "TheWicklowWolf/Lidify"; then + msg_info "Stopping Lidify" + systemctl stop lidify + msg_ok "Stopped Lidify" + + PYTHON_VERSION="3.12" setup_uv + CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="config" fetch_and_deploy_gh_release "lidify" "TheWicklowWolf/Lidify" "tarball" + + msg_info "Updating Lidify" + $STD uv venv --python 3.12 /opt/lidify/.venv + $STD uv pip install --python /opt/lidify/.venv/bin/python -r /opt/lidify/requirements.txt + cat </opt/lidify/.env +RELEASE_VERSION=$(cat ~/.lidify) +EOF + msg_ok "Updated Lidify" + + msg_info "Starting Lidify" + systemctl start lidify + msg_ok "Started Lidify" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW}Access it using the following URL:${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}:5000${CL}" diff --git a/install/lidify-install.sh b/install/lidify-install.sh new file mode 100644 index 0000000000..1f3b9809ad --- /dev/null +++ b/install/lidify-install.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Tim Moore (angusmaul) +# License: MIT | https://github.com/community-scripts/DevScripts/raw/main/LICENSE +# Source: https://github.com/TheWicklowWolf/Lidify + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +PYTHON_VERSION="3.12" setup_uv +fetch_and_deploy_gh_release "lidify" "TheWicklowWolf/Lidify" "tarball" + +msg_info "Setting up Lidify" +$STD uv venv --python 3.12 /opt/lidify/.venv +$STD uv pip install --python /opt/lidify/.venv/bin/python -r /opt/lidify/requirements.txt +install -d -m 700 /opt/lidify/config +# Lidify lets environment variables override the settings saved in the web UI, so keep its settings out of this file +cat </opt/lidify/.env +RELEASE_VERSION=$(cat ~/.lidify) +EOF +msg_ok "Set up Lidify" + +msg_info "Creating Lidify Service" +cat </etc/systemd/system/lidify.service +[Unit] +Description=Lidify +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/lidify +EnvironmentFile=/opt/lidify/.env +ExecStart=/opt/lidify/.venv/bin/gunicorn src.Lidify:app -c gunicorn_config.py +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now lidify +msg_ok "Created Lidify Service" + +motd_ssh +customize +cleanup_lxc diff --git a/json/lidify.json b/json/lidify.json new file mode 100644 index 0000000000..d3b09f21dc --- /dev/null +++ b/json/lidify.json @@ -0,0 +1,45 @@ +{ + "name": "Lidify", + "slug": "lidify", + "categories": [ + 14 + ], + "date_created": "2026-10-14", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 5000, + "documentation": "https://github.com/TheWicklowWolf/Lidify#readme", + "website": "https://github.com/TheWicklowWolf/Lidify", + "repository": "https://github.com/TheWicklowWolf/Lidify", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lidify.webp", + "description": "Lidify is a music discovery tool for Lidarr. It reads your existing Lidarr artists and uses Last.fm, Spotify or MusicBrainz to suggest similar artists, which can then be added straight back into Lidarr from the web UI.", + "install_methods": [ + { + "type": "default", + "script": "ct/lidify.sh", + "config_path": "/opt/lidify/config/settings_config.json", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 8, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Configure the Lidarr address and API key, and a Last.fm or Spotify API key, under Settings in the web UI on first run.", + "type": "info" + }, + { + "text": "Lidify lets environment variables override config/settings_config.json. A Lidify setting added to /opt/lidify/.env wins over the web UI, and changes made there will appear to revert.", + "type": "warning" + } + ] +} From e88f5c3d85f69e2f81c0ea19300a952029123c75 Mon Sep 17 00:00:00 2001 From: Tim Moore <1232390+angusmaul@users.noreply.github.com> Date: Wed, 14 Oct 2026 18:05:30 +1100 Subject: [PATCH 2/2] Lidify: drop the install comment, declare architectures Review feedback on PR 2428. architectures is amd64 only because var_arm64 stays unset: arm64 has not been tested. --- install/lidify-install.sh | 1 - json/lidify.json | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/install/lidify-install.sh b/install/lidify-install.sh index 1f3b9809ad..8d419c800a 100644 --- a/install/lidify-install.sh +++ b/install/lidify-install.sh @@ -20,7 +20,6 @@ msg_info "Setting up Lidify" $STD uv venv --python 3.12 /opt/lidify/.venv $STD uv pip install --python /opt/lidify/.venv/bin/python -r /opt/lidify/requirements.txt install -d -m 700 /opt/lidify/config -# Lidify lets environment variables override the settings saved in the web UI, so keep its settings out of this file cat </opt/lidify/.env RELEASE_VERSION=$(cat ~/.lidify) EOF diff --git a/json/lidify.json b/json/lidify.json index d3b09f21dc..ea18247f3f 100644 --- a/json/lidify.json +++ b/json/lidify.json @@ -12,6 +12,9 @@ "documentation": "https://github.com/TheWicklowWolf/Lidify#readme", "website": "https://github.com/TheWicklowWolf/Lidify", "repository": "https://github.com/TheWicklowWolf/Lidify", + "architectures": [ + "amd64" + ], "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lidify.webp", "description": "Lidify is a music discovery tool for Lidarr. It reads your existing Lidarr artists and uses Last.fm, Spotify or MusicBrainz to suggest similar artists, which can then be added straight back into Lidarr from the web UI.", "install_methods": [