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..8d419c800a --- /dev/null +++ b/install/lidify-install.sh @@ -0,0 +1,52 @@ +#!/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 +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..ea18247f3f --- /dev/null +++ b/json/lidify.json @@ -0,0 +1,48 @@ +{ + "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", + "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": [ + { + "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" + } + ] +}