#!/bin/sh set -eu OUTPUT_DIR="${OUTPUT_DIR:-/output}" OUTPUT_FILE="${OUTPUT_FILE:-guide.xml}" REFRESH_INTERVAL_MINUTES="${REFRESH_INTERVAL_MINUTES:-15}" RUN_ONCE="${RUN_ONCE:-0}" log() { printf '%s %s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" "$*" } generate() { tmp_dir="$OUTPUT_DIR/.f1tv-epg.tmp" rm -rf "$tmp_dir" mkdir -p "$tmp_dir" log "Generating F1TV EPG" status=0 if (cd "$tmp_dir" && python3 -u /app/f1tv_epg.py); then if mv -f "$tmp_dir/guide.xml" "$OUTPUT_DIR/$OUTPUT_FILE"; then log "EPG written to $OUTPUT_DIR/$OUTPUT_FILE" else status=$? log "Failed to move EPG into place" >&2 fi else status=$? log "EPG generation failed; keeping existing $OUTPUT_DIR/$OUTPUT_FILE" >&2 fi rm -rf "$tmp_dir" return "$status" } trap 'log "Stopping"; exit 0' INT TERM mkdir -p "$OUTPUT_DIR" if [ "$RUN_ONCE" = "1" ]; then generate exit $? fi case "$REFRESH_INTERVAL_MINUTES" in ''|*[!0-9]*) log "REFRESH_INTERVAL_MINUTES must be a positive integer" >&2 exit 1 ;; esac if [ "$REFRESH_INTERVAL_MINUTES" -le 0 ]; then log "REFRESH_INTERVAL_MINUTES must be greater than 0" >&2 exit 1 fi while true; do generate || true log "Next EPG refresh in ${REFRESH_INTERVAL_MINUTES}m" sleep $((REFRESH_INTERVAL_MINUTES * 60)) done