Files
EFTCOMPANION/update_trader_resets.sh
2026-06-25 21:26:53 +00:00

80 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Pull trader reset times (PvP & PvE) from Tarkov.dev and save as local JSON.
# Writes: /var/www/EFT_COMPANION/public_html/traders_pvp.json, /var/www/EFT_COMPANION/public_html/traders_pve.json
# Logs: /var/log/eft_traders_pull.log
set -euo pipefail
umask 022
OUTDIR="/var/www/EFT_COMPANION/public_html/"
URL="https://api.tarkov.dev/graphql"
LOG="/var/log/eft_traders_pull.log"
# Ensure log file exists and is writable (no sudo; assume root or correct perms)
mkdir -p /var/log
touch "$LOG"
log() { echo "[$(date -Is)] $*" | tee -a "$LOG"; }
# Compact, single-line GraphQL bodies (avoids quoting/heredoc pitfalls)
Q_PVP='{"query":"{ traders(gameMode: regular) { id name resetTime imageLink } }"}'
Q_PVE='{"query":"{ traders(gameMode: pve) { id name resetTime imageLink } }"}'
mkdir -p "$OUTDIR"
tmp_pvp="$(mktemp)"
tmp_pve="$(mktemp)"
raw_pvp="$(mktemp)"
raw_pve="$(mktemp)"
cleanup() {
rm -f "$tmp_pvp" "$tmp_pve" "$raw_pvp" "$raw_pve"
}
trap cleanup EXIT
log "Starting trader pulls…"
# ---- PvP ----
if curl -fSs -X POST "$URL" \
-H "Content-Type: application/json" \
--data "$Q_PVP" -o "$raw_pvp"
then
if jq -e '.errors' "$raw_pvp" >/dev/null 2>&1; then
log "ERROR: PvP GraphQL returned errors:"
jq '.errors' "$raw_pvp" | tee -a "$LOG"
exit 1
fi
jq '.data.traders' "$raw_pvp" > "$tmp_pvp"
else
rc=$?
log "ERROR: curl PvP request failed (exit $rc). Raw (if any):"
cat "$raw_pvp" | tee -a "$LOG" || true
exit 1
fi
# ---- PvE ----
if curl -fSs -X POST "$URL" \
-H "Content-Type: application/json" \
--data "$Q_PVE" -o "$raw_pve"
then
if jq -e '.errors' "$raw_pve" >/dev/null 2>&1; then
log "ERROR: PvE GraphQL returned errors:"
jq '.errors' "$raw_pve" | tee -a "$LOG"
exit 1
fi
jq '.data.traders' "$raw_pve" > "$tmp_pve"
else
rc=$?
log "ERROR: curl PvE request failed (exit $rc). Raw (if any):"
cat "$raw_pve" | tee -a "$LOG" || true
exit 1
fi
# Atomic move into place
mv "$tmp_pvp" "$OUTDIR/traders_pvp.json"
mv "$tmp_pve" "$OUTDIR/traders_pve.json"
chmod 644 "$OUTDIR/traders_pvp.json" "$OUTDIR/traders_pve.json"
log "Success: wrote $OUTDIR/traders_pvp.json and $OUTDIR/traders_pve.json"