initial commit
This commit is contained in:
Executable
+79
@@ -0,0 +1,79 @@
|
||||
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user