infra/stacks/f1-stream/files/backend
Viktor Barzin e8fe5d6198 f1-stream: drop demo + landing-page extractors, add fetch-proxy injection
Per user feedback: the demo Big Buck Bunny / Apple test streams aren't
useful in an F1-streams app. Removed DemoExtractor entirely. Tightened
the discord-extractor path filter from "any stream-shaped path" to
"direct embed/player path only" — the previous filter still let
sportsurge `/event/...` landing pages through, which the verifier
mistook for playable because they render player-class divs without a
real player.

Embed proxy now also rewrites window.fetch + XMLHttpRequest.open inside
the upstream HTML so that cross-origin XHRs (e.g. the hmembeds
`/sec/<JWT>` token-binding endpoint) go through our /embed-asset relay.
This avoids the CORS reject that fired when the player JS tried to call
hghndasw.gbgdhdffhf.shop/sec/... from an `f1.viktorbarzin.me` origin.

The verifier now requires a `<video>` element to mark embed streams
playable (not just a player-class div). Curated streams bypass the
verifier — hmembeds aggressively detects headless Chromium (devtool
trap, console-clear timing, automation flags) and won't progress past
JW Player init in our pod, but the user's real browser should clear
those checks. We can't honestly headless-verify hmembeds, so we trust
the curator instead of falsely rejecting them.

Image: viktorbarzin/f1-stream:v6.1.1
2026-05-06 21:50:54 +00:00
..
extractors f1-stream: drop demo + landing-page extractors, add fetch-proxy injection 2026-05-06 21:50:54 +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 f1-stream: drop demo + landing-page extractors, add fetch-proxy injection 2026-05-06 21:50:54 +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
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