Generate /players/{account_id}[/{match_id}] locally after POST_GAME via OpenDota; publish to OSS only when public_share is enabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the accidental itemcat_*.png.png downloads by stripping the
existing .png suffix before download_icons appends one. Leave daily
leaderboards/streamers and ignored OpenDota/STRATZ caches uncommitted.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a single fail-fast /proPlayers probe so rate-limited runners start the
15-pro refresh batch immediately from watchlist names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Continue with watchlist names when /proPlayers is rate-limited, and soft-fail
the pro-matches step so daily can still refresh leaderboards and streamers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop the long retry chain after three consecutive 429s and restore prior
hero cells so a burned IP no longer stalls the whole daily tier.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep restored cache and continue the tier so a burned runner IP cannot
block leaderboards, pro-match rotation, or streamer refresh.
Co-authored-by: Cursor <cursoragent@cursor.com>
Daily now refreshes the 15 oldest watchlist pros, keeps prior cache for the
rest, fails fast on consecutive 429s, and still writes a partial result.
Co-authored-by: Cursor <cursoragent@cursor.com>
v4 is unsupported on this Gitea host and was failing the job after a successful refresh; keep continue-on-error so summary upload cannot mask refresh success.
Co-authored-by: Cursor <cursoragent@cursor.com>
Linux self-hosted runners without python3-venv fail job-local venv; use pip --break-system-packages so refresh can still install deps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a job-local venv so pip install no longer fails with externally-managed-environment on the Mac mini runner.
Co-authored-by: Cursor <cursoragent@cursor.com>