94 lines
2.4 KiB
Bash
94 lines
2.4 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
# Commander reads optional flags from env (e.g. PROXY="") — empty values crash grab.
|
|
for var in PROXY DAYS TIMEOUT LANG OUTPUT GZIP JSON CURL; do
|
|
eval "val=\$$var"
|
|
if [ -z "$val" ]; then
|
|
unset "$var" 2>/dev/null || true
|
|
fi
|
|
done
|
|
|
|
grab_epg() {
|
|
cmd="npm run grab --"
|
|
|
|
if [ -n "$SITES" ]; then
|
|
if [ -n "$OUTPUT" ]; then
|
|
output="$OUTPUT"
|
|
else
|
|
output='guides/{site}.xml'
|
|
fi
|
|
cmd="$cmd --sites=$SITES --output=$output"
|
|
else
|
|
cmd="$cmd --channels=public/channels.xml --output=${OUTPUT:-public/guide.xml}"
|
|
fi
|
|
|
|
if [ -n "$MAX_CONNECTIONS" ]; then
|
|
cmd="$cmd --maxConnections=$MAX_CONNECTIONS"
|
|
fi
|
|
if [ -n "$DAYS" ]; then
|
|
cmd="$cmd --days=$DAYS"
|
|
fi
|
|
if [ -n "$TIMEOUT" ]; then
|
|
cmd="$cmd --timeout=$TIMEOUT"
|
|
fi
|
|
if [ -n "$DELAY" ] && [ "$DELAY" != "0" ]; then
|
|
cmd="$cmd --delay=$DELAY"
|
|
fi
|
|
if [ -n "$LANG" ]; then
|
|
cmd="$cmd --lang=$LANG"
|
|
fi
|
|
if [ -n "$PROXY" ]; then
|
|
cmd="$cmd --proxy=$PROXY"
|
|
fi
|
|
if [ "$GZIP" = "true" ]; then
|
|
cmd="$cmd --gzip"
|
|
fi
|
|
if [ "$JSON" = "true" ]; then
|
|
cmd="$cmd --json"
|
|
fi
|
|
if [ "$CURL" = "true" ]; then
|
|
cmd="$cmd --curl"
|
|
fi
|
|
|
|
echo "Running: $cmd"
|
|
eval $cmd
|
|
}
|
|
|
|
if [ "$1" = "grab" ]; then
|
|
grab_epg
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p /app/guides
|
|
|
|
if [ -n "$SITES" ]; then
|
|
echo "Starting initial EPG data grab for sites: $SITES"
|
|
grab_epg
|
|
fi
|
|
|
|
if [ -n "$CRON_SCHEDULE" ] && [ -n "$SITES" ]; then
|
|
echo "Setting up cron job with schedule: $CRON_SCHEDULE"
|
|
# Cron runs with a minimal env — bake grab-related vars into a wrapper script.
|
|
{
|
|
echo '#!/bin/sh'
|
|
echo 'cd /app'
|
|
for var in SITES OUTPUT MAX_CONNECTIONS DAYS TIMEOUT DELAY LANG PROXY GZIP JSON CURL; do
|
|
eval "val=\$$var"
|
|
if [ -n "$val" ]; then
|
|
printf "export %s='%s'\n" "$var" "$(printf '%s' "$val" | sed "s/'/'\\\\''/g")"
|
|
fi
|
|
done
|
|
echo 'exec /app/entrypoint.sh grab'
|
|
} >/app/run-grab.sh
|
|
chmod +x /app/run-grab.sh
|
|
echo "$CRON_SCHEDULE /app/run-grab.sh >> /proc/1/fd/1 2>&1" >/etc/crontabs/root
|
|
chmod 600 /etc/crontabs/root
|
|
crond -b -l 2
|
|
fi
|
|
|
|
echo "Starting server on port 3000 to serve EPG files from /app/guides"
|
|
npx serve -p 3000 /app/guides &
|
|
|
|
tail -f /dev/null
|