infra/stacks/f1-stream/files/backend
Viktor Barzin 5a0e4b3dac f1-stream: revive aceztrims + pitsport, more ppv variants
- aceztrims: scrape /f11/ (the actual stream page), not /f1/ (the
  cross-sport schedule). Drop the dead /iframe1?s= + onclick m3u8
  regexes (site moved to `getElementById('iframe').src = '...'` ~20
  channels ago). Strip HTML comments first so the ~20 legacy buttons
  kept inside <!-- ... --> stop showing up as false positives.
  Also pick up the default inline <iframe id='iframe' src='...'>.
  Local run: 11 channels (was 0).

- pitsport: decode the RSC payload before regex-matching in
  _parse_live_events (raw HTML had it escape-encoded, so the homepage
  card path was silently 0). Add the new /live-now route (canonical
  what's-live-right-now list). Add "f1" to MOTORSPORT_CATEGORIES — the
  site labels Formula 1 events as just "F1". Refresh the stale
  serveplay.site docstring (host rotates; pushembdz's api/stream link
  is authoritative).
  Local run: 7 m3u8 streams covering Canadian GP (EN1/EN2/MULTI/ITA/ESP)
  + NASCAR Coke 600 (was 0).

- ppv: always emit the parent embed alongside substreams (was dropping
  it whenever substreams existed). Prefer source_tag in substream titles
  so users see "Sky Sport 1 NZ" / "Apple TV (F1TV)" instead of generic
  #1/#2 suffixes.

Diagnosed against the live cluster (curated + 7 other extractors
returning 0 cached streams, only 2 dead hmembeds curated 24/7 channels
visible to users). Each fix verified with the extractor run against
live sites this turn.
2026-05-24 22:05:37 +00:00
..
extractors f1-stream: revive aceztrims + pitsport, more ppv variants 2026-05-24 22:05:37 +00:00
__init__.py [ci skip] f1-stream: add F1 schedule subsystem (Phase 2) 2026-02-23 22:55:13 +00:00
embed_proxy.py f1-stream: drop demo + landing-page extractors, add fetch-proxy injection 2026-05-06 21:50:54 +00:00
health.py f1-stream: add real F1 stream extractors and iframe player support 2026-03-01 14:35:19 +00:00
m3u8_rewriter.py [ci skip] f1-stream: add stream health checker and HLS proxy (Phases 4-5) 2026-02-23 23:41:16 +00:00
main.py f1-stream: only show streams confirmed playable by headless browser 2026-05-06 21:00:07 +00:00
playback_verifier.py chrome-service: in-cluster headed Chromium pool for f1-stream verifier 2026-05-07 10:43:40 +00:00
proxy.py [ci skip] f1-stream: add CDN token refresh, SvelteKit frontend, multi-stream layout (Phases 6-8) 2026-02-23 23:59:35 +00:00
requirements.txt f1-stream: only show streams confirmed playable by headless browser 2026-05-06 21:00:07 +00:00
schedule.py [ci skip] f1-stream: add F1 schedule subsystem (Phase 2) 2026-02-23 22:55:13 +00:00
stealth.py chrome-service: in-cluster headed Chromium pool for f1-stream verifier 2026-05-07 10:43:40 +00:00
token_refresh.py [ci skip] f1-stream: add CDN token refresh, SvelteKit frontend, multi-stream layout (Phases 6-8) 2026-02-23 23:59:35 +00:00