Repository navigation
0.3.0: Movies & Shows tab (films and series, with on-the-fly audio conversion) - #23
Merged
Merged
Conversation
An Xtream line's films and series get their own tab. A big line has hundreds of thousands of titles (one measured 213,348 films, 108 MB of JSON), so the screen asks for categories, then one category, then one show's episodes (POST /api/vod). Search builds a compact server-side index once per line (typed arrays, one build at a time) and answers in milliseconds after. Providers serve films as ripped, mostly MKV with AC-3 / E-AC-3 / DTS sound, and refuse .ts / .mp4 (500). No browser decodes that audio, so the remuxer gains a vod mode: ffprobe for length and codecs, the picture copied, the sound made AAC, fMP4 HLS (HEVC tagged hvc1 for Safari), #EXT-X-START so a growing playlist starts at 0. Seeking past what is converted starts a session at that point. A plain .mp4 with ordinary codecs still plays directly. Continue watching resumes where you stopped; the next episode follows. Arrows seek 10 s / 30 s over a film. A plain M3U's /movie/ and /series/ entries show up too. MCP gets movies_shows. Also: a play() rejected by a newer source (AbortError) no longer counts as the browser refusing sound, which muted the video after a seek or a fast zap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a Movies & Shows tab next to Live TV.
Why
Anthony's line had 53,531 live channels, 213,348 movies and 46,051 series (1.19M episodes). hdtilt only showed the live channels. Its films are MKV with AC-3 / E-AC-3 audio. The provider returns 500 for
.tsor.mp4, so a browser can't play them as served.What
POST /api/vod. Nothing loads the whole catalogue.src/server/remux.jsvod mode): ffprobe reads length and codecs (/hls/<b64>/info.json). Video is copied and audio becomes stereo AAC, delivered as fMP4 HLS (HEVC taggedhvc1for Safari).#EXT-X-STARTmakes a growing playlist start at 0. A seek past what's converted starts a new session there (?vod=1&t=). An.mp4with ordinary codecs plays directly.njumps to the next episode./movie/and/series/entries appear in the same tab.movies_showstool.play()rejected by a newer source (AbortError) was treated as an autoplay block. That muted the video after a seek or a fast zap.Tested
bun test: 78 pass with ffmpeg. Newtest/vod.test.jsincludes an end-to-end MKV + AC-3 → HLS + AAC conversion.Notes
🤖 Generated with Claude Code