Files
projects/Dockers/f1tv-epg/entrypoint.sh
T
Bram 415bb3906a
Build and Push Docker Images / build-and-push (push) Successful in 1m19s
f1tv epg
2026-11-08 21:49:03 +01:00

62 lines
1.4 KiB
Bash
Executable File

#!/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