Fix Kick streams by making every rung prove it produced bytes
Codebuff
4144c35
/formats advertised yt-dlp format ids while /stream handed those ids to
streamlink, so Kick streamed a zero-byte 200. (Twitch only worked because
yt-dlp's Twitch ids happen to be valid streamlink quality names.) Kick's
streamlink plugin also needs a headless Chromium for its JS challenge, which
does not exist in this image.
Listing and streaming now share one ladder per platform and a rung only wins if
it produced bytes on stdout. ffmpeg failures return 502 with real stderr instead
of a silent empty 200, both child processes are reaped, filenames no longer
collide, and /download + /files were dropped along with nodejs, yt-dlp-ejs and
the no-op bgutil POT provider.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>