Files
gavindiaz 9259325d8a
deploy GitHub Pages / deploy (push) Has been cancelled
tests / test (push) Has been cancelled
first commit
2026-07-22 18:53:44 +08:00

82 lines
2.8 KiB
YAML

name: refresh event list
on:
schedule:
- cron: "17 * * * *" # hourly at :17
workflow_dispatch:
permissions:
contents: write
concurrency:
group: refresh-events
cancel-in-progress: true
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch Polymarket events + extract negRisk
shell: bash
run: |
set -euo pipefail
mkdir -p docs/data
curl -sSLf \
"https://gamma-api.polymarket.com/events?closed=false&archived=false&active=true&limit=25&order=volume24hr&ascending=false" \
-o /tmp/raw.json
python3 - <<'PY'
import json, os, datetime, pathlib
raw = json.loads(pathlib.Path('/tmp/raw.json').read_text(encoding='utf-8'))
neg = [e for e in raw if e.get('negRisk')]
out = []
for ev in neg:
markets = ev.get('markets') or []
if len(markets) < 2:
continue
outcomes = []
ok = True
for i, m in enumerate(markets):
if m.get('closed') or m.get('archived'):
ok = False; break
ids = m.get('clobTokenIds')
if isinstance(ids, str):
try: ids = json.loads(ids)
except Exception: ids = None
if not isinstance(ids, list) or not ids:
ok = False; break
name = m.get('groupItemTitle') or m.get('outcome') or m.get('question') or f'Outcome {i+1}'
outcomes.append({'token_id': str(ids[0]), 'name': str(name)})
if not ok or len(outcomes) < 2:
continue
out.append({
'id': ev.get('negRiskMarketID') or str(ev.get('id')),
'title': ev.get('title') or ev.get('slug') or 'Event',
'slug': ev.get('slug'),
'outcomes': outcomes,
})
if len(out) >= 8:
break
payload = {
'generated_at': datetime.datetime.now(datetime.UTC).isoformat(),
'events': out,
}
pathlib.Path('docs/data/events.json').write_text(
json.dumps(payload, indent=2, ensure_ascii=False), encoding='utf-8'
)
print(f'wrote {len(out)} events')
PY
- name: Commit if changed
run: |
if git diff --quiet docs/data/events.json; then
echo "no change"
exit 0
fi
git config user.name "events-refresh-bot"
git config user.email "events-refresh-bot@users.noreply.github.com"
git add docs/data/events.json
git commit -m "chore(events): refresh snapshot $(date -u +%Y-%m-%dT%H:%MZ)"
git push