v2.0.2
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_playlistnow splits withsplitlines(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.2Or always latest stable version:
docker pull ghcr.io/oratorian/emby-watchparty:latestOr use docker-compose with the provided docker-compose.yml.example
Option 2: Manual Installation
- Download and extract
emby-watchparty-2.0.2.zip - Copy
.env.exampleto.envand configure your Emby server details - Install dependencies:
pip install -r requirements.txt - Run:
python app.py - 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.