mirror of
https://github.com/alexta69/metube.git
synced 2026-06-13 16:40:05 +00:00
78 lines
2.6 KiB
Bash
78 lines
2.6 KiB
Bash
#!/bin/sh
|
|
|
|
PUID="${UID:-$PUID}"
|
|
PGID="${GID:-$PGID}"
|
|
|
|
echo "Setting umask to ${UMASK}"
|
|
umask ${UMASK}
|
|
echo "Creating download directory (${DOWNLOAD_DIR}), state directory (${STATE_DIR}), and temp dir (${TEMP_DIR})"
|
|
mkdir -p "${DOWNLOAD_DIR}" "${STATE_DIR}" "${TEMP_DIR}"
|
|
|
|
do_upgrade() {
|
|
echo "Upgrading yt-dlp to nightly channel..."
|
|
if ! python3 -m pip --version >/dev/null 2>&1; then
|
|
echo "pip not found; attempting ensurepip"
|
|
python3 -m ensurepip --upgrade >/dev/null 2>&1 || true
|
|
fi
|
|
if ! python3 -m pip install -U --pre "yt-dlp[default,curl-cffi,deno]"; then
|
|
echo "Warning: yt-dlp nightly upgrade failed; continuing with existing installation"
|
|
return 1
|
|
fi
|
|
echo "yt-dlp nightly upgrade complete"
|
|
return 0
|
|
}
|
|
|
|
run_supervised() {
|
|
while true; do
|
|
"$@" &
|
|
child_pid=$!
|
|
trap 'kill -TERM "$child_pid" 2>/dev/null; wait "$child_pid" 2>/dev/null' TERM INT
|
|
wait "$child_pid"
|
|
exit_code=$?
|
|
trap - TERM INT
|
|
if [ "$exit_code" -eq 42 ]; then
|
|
echo "MeTube requested yt-dlp update restart (exit 42)"
|
|
do_upgrade || true
|
|
continue
|
|
fi
|
|
return "$exit_code"
|
|
done
|
|
}
|
|
|
|
nightly_enabled() {
|
|
[ -n "${YTDL_NIGHTLY_UPDATE_TIME}" ]
|
|
}
|
|
|
|
disable_nightly_for_non_root() {
|
|
if nightly_enabled; then
|
|
echo "YTDL_NIGHTLY_UPDATE_TIME is set but this container runs as a non-root user; nightly yt-dlp updates are not supported. Ignoring YTDL_NIGHTLY_UPDATE_TIME."
|
|
unset YTDL_NIGHTLY_UPDATE_TIME
|
|
fi
|
|
}
|
|
|
|
if [ `id -u` -eq 0 ] && [ `id -g` -eq 0 ]; then
|
|
if [ "${PUID}" -eq 0 ]; then
|
|
echo "Warning: it is not recommended to run as root user, please check your setting of the PUID/PGID (or legacy UID/GID) environment variables"
|
|
fi
|
|
if [ "${CHOWN_DIRS:-true}" != "false" ]; then
|
|
echo "Changing ownership of download and state directories to ${PUID}:${PGID}"
|
|
chown -R "${PUID}":"${PGID}" /app "${DOWNLOAD_DIR}" "${STATE_DIR}" "${TEMP_DIR}"
|
|
fi
|
|
if nightly_enabled; then
|
|
echo "YTDL_NIGHTLY_UPDATE_TIME is set to ${YTDL_NIGHTLY_UPDATE_TIME}; upgrading yt-dlp on startup"
|
|
do_upgrade || true
|
|
fi
|
|
echo "Starting BgUtils POT Provider"
|
|
gosu "${PUID}":"${PGID}" bgutil-pot server >/tmp/bgutil-pot.log 2>&1 &
|
|
echo "Running MeTube as user ${PUID}:${PGID}"
|
|
run_supervised gosu "${PUID}":"${PGID}" python3 app/main.py
|
|
exit $?
|
|
else
|
|
echo "User set by docker; running MeTube as `id -u`:`id -g`"
|
|
disable_nightly_for_non_root
|
|
echo "Starting BgUtils POT Provider"
|
|
bgutil-pot server >/tmp/bgutil-pot.log 2>&1 &
|
|
run_supervised python3 app/main.py
|
|
exit $?
|
|
fi
|