Skip to content

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 01 Aug 21:45
· 54 commits to main since this release
v2.0.2
1068f00

Emby Watch Party v2.0.2

A single-fix patch release for a playback failure that only showed up on some Emby servers: the video would sit at 0:00 buffering forever and never start, while the party itself, chat, participants, sync, looked perfectly healthy. If your setup worked fine, nothing here changes for you; this is a safe drop-in either way.

The cause was a stray carriage return. Emby emits its HLS playlists with Windows-style CRLF line endings, and WatchParty's proxy was splitting them on \n only, so every media URI kept a trailing \r. The party token was then appended after that control character, which made HLS.js read the token as its own separate, invalid line. The browser never requested a variant playlist or a single media segment, and Emby eventually gave up and marked the session idle.

Fixed

  • Playback no longer hangs at 0:00 on Emby servers that emit CRLF playlists. _rewrite_playlist now splits with splitlines(keepends=True), strips the terminator off each URI before appending ?token= / &token=, then reattaches it, so the tokenized variant and segment URLs stay on one valid playlist line. Upstream CRLF/LF formatting and the final line termination are preserved byte-for-byte rather than being normalised to LF, so the proxied playlist stays faithful to what Emby served. Public routes, configuration, and the token scheme are unchanged.

Added

  • Integration test coverage for the HLS proxy (tests/test_hls_proxy.py, 4 tests). Exercises master-playlist rewriting, variant-playlist rewriting, and transport-stream proxying through the real public HLS routes, plus a direct regression test asserting CRLF and final-line-ending preservation. This is the first automated coverage the HLS proxy has had.

Reported, diagnosed, and fixed by dnordel in #44, including a reproduction against a real CRLF Emby master playlist. Thank you!



Installation

Option 1: Docker (Recommended)

Version specific:

docker pull ghcr.io/oratorian/emby-watchparty:2.0.2

Or always latest stable version:

docker pull ghcr.io/oratorian/emby-watchparty:latest

Or use docker-compose with the provided docker-compose.yml.example

Option 2: Manual Installation

  1. Download and extract emby-watchparty-2.0.2.zip
  2. Copy .env.example to .env and configure your Emby server details
  3. Install dependencies: pip install -r requirements.txt
  4. Run: python app.py
  5. Open browser to http://localhost:5000

What's Included

  • Complete application source code
  • Docker support with pre-built images
  • Requirements file for easy dependency installation
  • Example configuration file
  • README with full documentation
  • MIT License

Requirements

  • Python 3.8 or higher (manual install)
  • Docker (container install)
  • Emby server with API key
  • Modern web browser

See README.md for full documentation.