Skip to content

Add Kick adapter, skip HLS og:video iframes, fix Twitch video and clip embeds - #585

Merged
Vitorinox merged 1 commit into
masterfrom
feat/kick-adapter
Oct 31, 2026
Merged

Vitorinox merged 1 commit into
masterfrom
feat/kick-adapter

Conversation

@Vitorinox

Copy link
Copy Markdown
Collaborator

Summary

  • New Kick adapter (kick.com)
  • Generic fix: HLS og:video no longer becomes an <iframe>
  • Twitch: correct video iframe parameter and clip support

Confirmed failures, before / after

URL Before (master) After
https://kick.com/xqc code: null <iframe src="https://player.kick.com/xqc"> 640x360. player.kick.com/<slug> returns 200 with no X-Frame-Options / CSP
https://kick.com/xqc/videos/4aeefefc-cd67-413e-8107-14327b21f5a3 title: null, no image (page has no og metas) title, author xQc and 720p thumbnail from /api/v1/video/<uuid> and /api/v2/channels/<slug>/videos
https://kick.com/xqc/clips/clip_01M5YVZS3AF6NPDY1RMFXKRSWK <iframe src=".../playlist.m3u8"> (og:video is HLS, og:video:type = application/x-mpegURL) code: null
Twitch video with twitch:parent player.twitch.tv/?id=<ID> player.twitch.tv/?video=v<ID>&parent=... as in the Twitch docs
https://clips.twitch.tv/<slug>, twitch.tv/<channel>/clip/<slug> never any code clips.twitch.tv/embed?clip=<slug>&parent=... when twitch:parent is set, null otherwise (parent is required)

Detectors/Code.php reads og:video:type only for the HLS check. Using it generally changed the existing viddler fixture from iframe to video, so og:video_type stays the source for the rest.

Not confirmed

  • Kick VOD and clip player URLs: player.kick.com is an SPA that returns 200 for any path, so no URL could be verified and none is emitted.
  • Whether the Kick channel player renders for an offline channel.
  • The Twitch clip fixture uses the slug from Twitch's docs example; the anonymous page returns generic metadata only, so the clip iframe is covered by unit tests rather than a live render.

Tests

  • New tests/VideoAdaptersCodeTest.php (unit, recorded responses) and Kick / Twitch clip cases in PagesTest. No existing fixture changed. A Kick playback token in a cached HTML response is redacted.
  • Local: PHPUnit OK (254 tests) on PHP 7.4, 8.1, 8.2, 8.3, 8.4, 8.5; PHPStan clean. PHP 8.0 could not run locally with the installed PHPUnit (syntax error in vendor); left to CI.

@Vitorinox
Vitorinox merged commit 8560361 into master Oct 31, 2026
10 checks passed
@Vitorinox
Vitorinox deleted the feat/kick-adapter branch October 31, 2026 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant