This commit is contained in:
1 parent
774200fb39
commit
415bb3906a
7 files changed
+205
No files matched your search
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/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
|
||||
Reference in new issue
Block a user