Merge pull request #315 from BiluliB/huntarr

New Script: Huntarr
This commit is contained in:
CanbiZ 2025-06-12 20:22:28 +02:00 committed by GitHub
commit 1fa603436d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 199 additions and 0 deletions

5
ct/headers/huntarr Normal file
View File

@ -0,0 +1,5 @@
__ __ __
/ / / /_ ______ / /_____ ___________
/ /_/ / / / / __ \/ __/ __ `/ ___/ ___/
/ __ / /_/ / / / / /_/ /_/ / / / /
/_/ /_/\__,_/_/ /_/\__/\__,_/_/ /_/

94
ct/huntarr.sh Normal file
View File

@ -0,0 +1,94 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: BiluliB
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/plexguide/Huntarr.io
APP="huntarr"
var_tags="${var_tags:-arr}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/${APP}/main.py ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
msg_ok "No update required. ${APP} is already at ${RELEASE}"
exit
fi
msg_info "Stopping $APP"
systemctl stop ${APP}
msg_ok "Stopped $APP"
msg_info "Creating Backup"
if ls /opt/"${APP}"_backup_*.tar.gz &>/dev/null; then
rm -f /opt/"${APP}"_backup_*.tar.gz
msg_info "Removed previous backup"
fi
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/"${APP}"
msg_ok "Backup Created"
msg_info "Updating $APP to v${RELEASE}"
temp_file=$(mktemp)
curl -fsSL -o "$temp_file" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip"
unzip -q -o "$temp_file" -d /tmp
cp -rf "/tmp/Huntarr.io-${RELEASE}"/* /opt/"${APP}"/
msg_info "Updating Python dependencies"
cd /opt/"${APP}" || exit
if [[ -f "/opt/${APP}/.requirements_checksum" ]]; then
CURRENT_CHECKSUM=$(md5sum requirements.txt | awk '{print $1}')
STORED_CHECKSUM=$(cat .requirements_checksum)
if [[ "$CURRENT_CHECKSUM" != "$STORED_CHECKSUM" ]]; then
msg_info "Requirements have changed. Performing full upgrade."
$STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python
else
msg_info "Requirements unchanged. Verifying installation."
$STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python
fi
else
$STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python
fi
md5sum requirements.txt | awk '{print $1}' >.requirements_checksum
msg_ok "Updated Python dependencies"
msg_info "Starting $APP"
systemctl start ${APP}
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f "$temp_file"
rm -rf "/tmp/Huntarr.io-${RELEASE}"
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/"${APP}"_version.txt
msg_ok "Updated $APP to v${RELEASE}"
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 "${TAB}${GATEWAY}${BGN}http://${IP}:9705${CL}"

View File

@ -0,0 +1,34 @@
{
"name": "Huntarr",
"slug": "huntarr",
"categories": [
14
],
"date_created": "2025-05-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9705,
"documentation": "https://github.com/plexguide/Huntarr.io/wiki",
"website": "https://github.com/plexguide/Huntarr.io",
"logo": "https://raw.githubusercontent.com/plexguide/Huntarr.io/refs/heads/main/frontend/static/logo/Huntarr.svg",
"description": "Huntarr is a tool that automates the search for missing or low-quality media content in your collection. It works seamlessly with applications like Sonarr, Radarr, Lidarr, Readarr, and Whisparr, enhancing their functionality with continuous background scans to identify and update missed or outdated content. Through a user-friendly web interface accessible on port 9705, Huntarr provides real-time statistics, log views, and extensive configuration options. The software is especially useful for users who want to keep their media library up to date by automatically searching for missing episodes or higher-quality versions. Huntarr is well-suited for self-hosted environments and can easily run in LXC containers or Docker setups.",
"install_methods": [
{
"type": "default",
"script": "ct/huntarr.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@ -0,0 +1,66 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: BiluliB
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/plexguide/Huntarr.io
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
APPLICATION="huntarr"
REPO_NAME="Huntarr.io"
msg_info "Installing Dependencies"
$STD apt-get install -y jq
msg_ok "Installed Dependencies"
msg_info "Installing Python"
$STD apt-get install -y \
python3 \
python3-venv
msg_ok "Installed Python"
msg_info "Setup uv"
setup_uv
msg_ok "Setup uv"
msg_info "Setting Up Huntarr"
RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
temp_file=$(mktemp)
$STD curl -fsSL -o "$temp_file" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip"
$STD unzip -q "$temp_file"
$STD mv "${REPO_NAME}-${RELEASE}/" "/opt/${APPLICATION}"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
$STD uv venv /opt/${APPLICATION}/venv
$STD uv pip install --python /opt/${APPLICATION}/venv/bin/python -r /opt/${APPLICATION}/requirements.txt
msg_ok "Setup Huntrarr Complete"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
[Unit]
Description=Huntarr Service
After=network.target
[Service]
WorkingDirectory=/opt/${APPLICATION}
ExecStart=/opt/${APPLICATION}/venv/bin/python /opt/${APPLICATION}/main.py
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now ${APPLICATION}
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"