Jump to content

Emby Watch Party - Synchronized Viewing for Friends & Family


Recommended Posts

Posted (edited)
6 minutes ago, jwalk0nemb said:

I am loving this! My family across the country currently just streams through discord for movie night, and it's clunky and terrible. I want to use this, but I tried making a native app for our tv, which works, but I need to streamline the UI to make it work well. I'll mess around with it more, but in the future, do you intend to make a Control/viewer distinction? So the creator of the party has the ability to change party settings and is the only one with the "browse" bar on the left, or to enable/disable chat function? Essentially so the manager would pick the show/movie, and whoever joins the party has regular video controls (play/pause, subtitles, audio) but can't change anything else?

Sounds interresting, so only the one who opens the party can control what is played, but play,pause etc can still be managed by everyone... Should be possible.

At the moment i am testing a feature request, which enables to activate login before joining a party, So every user would need an account on your server, branch feature-Req/emby-login.
But as my personal work is very tight right now, I don't have much time to continue right now, But don't worry this project wont die, like the others did.

Edited by Oratorian
QuackMasterDan
Posted (edited)
On 11/15/2025 at 10:48 AM, jwalk0nemb said:

I am loving this! My family across the country currently just streams through discord for movie night, and it's clunky and terrible. I want to use this, but I tried making a native app for our tv, which works, but I need to streamline the UI to make it work well. I'll mess around with it more, but in the future, do you intend to make a Control/viewer distinction? So the creator of the party has the ability to change party settings and is the only one with the "browse" bar on the left, or to enable/disable chat function? Essentially so the manager would pick the show/movie, and whoever joins the party has regular video controls (play/pause, subtitles, audio) but can't change anything else?

I’m pretty sure everyone shares control in selection of the media, and share the pause/play/timeline-skip buttons. However, each viewer can have their own subtitle and volume preferences. In general, it’s a shared experience. Hoping that helps.

Edited by QuackMasterDan
  • 4 weeks later...
Posted

Thanks for creating this app, it's been a great experience so far. Unfortunately, I've been having one persistent issue that I was hoping you could help with.

Whenever a user connects and tries to start a video, a network error is thrown about an invalid/missing HLS token. I've tried using Firefox, Chrome, and Edge on different computers to fix the issue since I figured it's client-side, but there was no difference in outcome. I replicated the error I'm seeing by launching the webpage locally on the host computer and copied it from the console below. I've also attached the emby-watchparty.logand config.py if that might help.

Dec  8 13:30:43 DESKTOP-MP7UCQ3 emby-watchparty[13176]: warning: Invalid or missing HLS token for segment access: main.m3u8 from 127.0.0.1

I cant imagine its anything to do with the config.py or network since when I disabled the HLS_TOKEN_VALIDATION check in the config.py file, everything works properly, and I can load videos on the local network or externally.

 Any idea on a solution or what could be causing it? Im currently running: Emby Version 4.9.1.90, Python Version 3.14, and Emby Watch Part v1.2.0.

Thanks for any help 😃.

Posted
16 hours ago, Ramto said:

Thanks for creating this app, it's been a great experience so far. Unfortunately, I've been having one persistent issue that I was hoping you could help with.

Whenever a user connects and tries to start a video, a network error is thrown about an invalid/missing HLS token. I've tried using Firefox, Chrome, and Edge on different computers to fix the issue since I figured it's client-side, but there was no difference in outcome. I replicated the error I'm seeing by launching the webpage locally on the host computer and copied it from the console below. I've also attached the emby-watchparty.logand config.py if that might help.

Dec  8 13:30:43 DESKTOP-MP7UCQ3 emby-watchparty[13176]: warning: Invalid or missing HLS token for segment access: main.m3u8 from 127.0.0.1

I cant imagine its anything to do with the config.py or network since when I disabled the HLS_TOKEN_VALIDATION check in the config.py file, everything works properly, and I can load videos on the local network or externally.

 Any idea on a solution or what could be causing it? Im currently running: Emby Version 4.9.1.90, Python Version 3.14, and Emby Watch Part v1.2.0.

Thanks for any help 😃.

It is indeed a bug in the HLS token validation. I have to take a look into it. Keep it disabled for now. This security measure was meant to prevent outsiders from sniffing the cookie and gaining access to the party without an invitation. But I am not home for at least another 4 weeks, I guess, since I sometimes work offshore. So it could be as late as January before I can release the fix.

  • 4 weeks later...
Oratorian
Posted

Newest version went online on github and can be downloaded.

  • Like 2
  • 2 weeks later...
yocker
Posted

From the idea of this plugin i have played a little around.

I made a plugin where sync party work with the Emby apps by using collections. (just a concept)
Add a movie to collections in a folder named "WatchParty", when users press the movie they get synced to the master.

Maybe you could make something like that so that Emby apps are supported and it doesn't need to be played from a browser.

  • Like 1
dalo1987
Posted
On 1/3/2026 at 1:14 AM, Oratorian said:

Newest version went online on github and can be downloaded.

Very nice. Just tested a docker container with it. 
Works really well already. 

Just a suggestion:
Require login true is great.
However: If those emby-users would invite guests from outside, it would be great if they just require the url without login. 

I also would like to test with you if you would like. feel free to contact me

Oratorian
Posted (edited)
10 minutes ago, dalo1987 said:

Very nice. Just tested a docker container with it. 
Works really well already. 

Just a suggestion:
Require login true is great.
However: If those emby-users would invite guests from outside, it would be great if they just require the url without login. 

I also would like to test with you if you would like. feel free to contact me

Well that's not something I would include, sorry. Mixed authentication always causes problems.

Edited by Oratorian
DerHelm
Posted

I had to use grok as I have never made a docker before.

It went well and worked on my QNAP. 

It's looking great so far, going to test it tonight with friends instead of using discord.

Oratorian
Posted
1 minute ago, DerHelm said:

I had to use grok as I have never made a docker before.

It went well and worked on my QNAP. 

It's looking great so far, going to test it tonight with friends instead of using discord.

New Version will be up soon, with smaller bugfixes, and a ready-to-pull container.

QuackMasterDan
Posted

Thanks Oratorian for all of your hard and continued work on this project. It's been so fun to have Watch Parties with friends and family, and it just keeps getting better! 🙂

Oratorian
Posted (edited)

[1.3.0] - 2026-01-23

Changed

  • Configuration migrated to .env file: All settings now loaded from .env file using python-dotenv
  • Copy .env.example to .env and configure your settings
  • Old config.py values no longer used directly
  • Production server support: Switched from Werkzeug to gevent for production deployments
  • run_linux_production.py for Linux/Docker
  • run_windows_production.py for Windows
  • app.py no longer runs directly - use platform-specific entry points
  • Rate limiting simplified: Now accepts numeric values only (e.g., RATE_LIMIT_API_CALLS=1000)
  • Time units added automatically (per minute for API calls, per hour for party creation)

Added

  • LOG_TO_FILE option: Set to `false` for Docker stdout-only logging
  • GitHub Actions Docker build: Automatic container builds to ghcr.io on release
  • Version check at startup: Displays update notification if newer version available

Fixed

  • GitHub version check now actually runs at startup
  • Rate limiter configuration error with numeric-only values

Breaking Changes

  • Configuration moved from `config.py` to `.env` file - must migrate settings
  • Application must be run via `run_linux_production.py` or `run_windows_production.py`
  • Removed eventlet dependency (deprecated), now uses gevent everywhere

GitHub Releases.

Docker:

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

Please consult the README for how to set the config there
All possible Docker environment Variables : Docker Environment Variables

Edited by Oratorian
Posted

Ive set this up behind nginx proxy and its great. My only feature request right now outside of some kind of admin panel is even though i made a specific watch together account and only gave it access to my movies and tv shows folder it still shows every single category i've created on my server. I have the docker set to only login with the user and not the API so even though it sees the the collections it doesn't load anything inside them at least.

  • Like 1
Oratorian
Posted (edited)
6 hours ago, Spexor said:

Ive set this up behind nginx proxy and its great. My only feature request right now outside of some kind of admin panel is even though i made a specific watch together account and only gave it access to my movies and tv shows folder it still shows every single category i've created on my server. I have the docker set to only login with the user and not the API so even though it sees the the collections it doesn't load anything inside them at least.

I will take a look, Emby dictates which libraries show,
Did you also set the API key? The Key should normally only be used to retrieve INTRO data for the Skip-Intro button.

Edited by Oratorian
Oratorian
Posted
8 hours ago, Spexor said:

Ive set this up behind nginx proxy and its great. My only feature request right now outside of some kind of admin panel is even though i made a specific watch together account and only gave it access to my movies and tv shows folder it still shows every single category i've created on my server. I have the docker set to only login with the user and not the API so even though it sees the the collections it doesn't load anything inside them at least.

I just tested it, and I can confirm Emby dictates which libraries it can access.

It still shows the collection Folder, but as soon as they choose them, Watchparty says No Items Found
So it is merely a listing bug, which I should be able to fix.

Oratorian
Posted (edited)

 

[1.3.1] - 2026-01-24

Fixed

  • Library filtering by user permissions: Libraries now filtered based on configured user's access
  • Feature suggestion by Spexor
  • Uses `/emby/Users/{user_id}/Views` endpoint instead of `/emby/Library/MediaFolders`
  • Restricted users only see libraries they have permission to access
  • Prevents "No items found" errors when clicking inaccessible libraries


GitHub Releases.

Docker:

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

Please consult the README for how to set the config there
All possible Docker environment Variables: Docker Environment Variables

Edited by Oratorian
Oratorian
Posted (edited)

[1.4.0] - 2026-01-26

Added

  • APP_PREFIX support for reverse proxy deployments: Deploy at a URL path prefix (e.g., `/watchparty`)
    • New `APP_PREFIX` config option for path-based reverse proxy setups
    • Uses Flask Blueprint with dynamic url_prefix for native route handling
    • Socket.IO path automatically configured for prefixed deployments
    • All templates and API calls updated to respect prefix
  • Playback progress sync with Emby server: Watch progress now syncs back to Emby
    • Reports playback start, progress, and stop events to Emby
    • Periodic progress reporting every 10 seconds
    • Resume watching from where you left off on any Emby client
  • Pre-release support in GitHub Actions: Release workflow now handles alpha/beta/rc versions
    • Auto-detects pre-release tags and sets GitHub release flag accordingly
    • Skips `latest` and `major.minor` Docker tags for pre-releases

Changed

  • Unified production entrypoint: Consolidated `run_linux_production.py` and `run_windows_production.py` into single `run_production.py`
    • Both platforms now use gevent, eliminating need for separate files
    • Simpler deployment with single command: `python run_production.py`

Fixed

  • Session cookie for reverse proxy deployments: Login now works correctly when using APP_PREFIX behind a reverse proxy
    • Added `SESSION_COOKIE_PATH` configuration to match APP_PREFIX
    • Added `SESSION_COOKIE_SAMESITE='Lax'` for proper redirect handling after login
    • Fixes issue where session cookie wasn't sent with prefixed routes

 

GitHub Releases.

Docker:

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

Please consult the README for how to set the config there
All possible Docker environment Variables: Docker Environment Variables

Edited by Oratorian
  • 3 weeks later...
Posted

Is there any chance you could please make this an unraid docker template as well?  It is a pain to use "standard" docker on unraid, and I love the idea of this plugin.  I'm sure it would result in a lot of unraid users installing it as well.


Thanks for your time!

Posted

I will look into Unraids docker templates, can these be pulled like any other docker container?

QuackMasterDan
Posted

I would absolutely LOVE an unRAID docker container. I run 8 already, including Emby, navidrome, sonarr, and more. It would sure beat having to run Watch Party off a VM like currently. If you can make this happen it would be incredibly helpful!

Posted (edited)
14 hours ago, QuackMasterDan said:

I would absolutely LOVE an unRAID docker container. I run 8 already, including Emby, navidrome, sonarr, and more. It would sure beat having to run Watch Party off a VM like currently. If you can make this happen it would be incredibly helpful!

 

16 hours ago, darkrom said:

Is there any chance you could please make this an unraid docker template as well?  It is a pain to use "standard" docker on unraid, and I love the idea of this plugin.  I'm sure it would result in a lot of unraid users installing it as well.


Thanks for your time!

 

Please test this xml file and report back, since I have no unRaid running in my test-lab.
emby-watchparty.xm

Or add my repository: https://github.com/Oratorian/emby-watchparty/ as a unRaid repo, it should find it.
If not try to add https://github.com/Oratorian/emby-watchparty/tree/main/unraid

Edited by Oratorian
Posted

It works and launches fine, you can probably "publish" that now however thats done on the unraid docker "store".   

 

I have no idea how to use it yet so let me try to configure it, but the XML was very straightforward and the webui launches no problem etc.


Thanks so much that was incredibly fast.

Posted
2 minutes ago, darkrom said:

It works and launches fine, you can probably "publish" that now however thats done on the unraid docker "store".   

 

I have no idea how to use it yet so let me try to configure it, but the XML was very straightforward and the webui launches no problem etc.


Thanks so much that was incredibly fast.

If my research is correct, you just have to add my repository: https://github.com/Oratorian/emby-watchparty/ as a unRaid repo, it should find it.
If not try to add https://github.com/Oratorian/emby-watchparty/tree/main/unraid

  • Like 1
Posted
3 minutes ago, Oratorian said:

If my research is correct, you just have to add my repository: https://github.com/Oratorian/emby-watchparty/ as a unRaid repo, it should find it.
If not try to add https://github.com/Oratorian/emby-watchparty/tree/main/unraid

That works thank you.  Only issue is I have no library showing up.  Logged in as the admin of emby to rule that out, copied the API.  Pretty straightforward and looks like exactly what I wanted once my library is there.   Possibly some kind of permissions issue?

Posted (edited)
4 minutes ago, darkrom said:

That works thank you.  Only issue is I have no library showing up.  Logged in as the admin of emby to rule that out, copied the API.  Pretty straightforward and looks like exactly what I wanted once my library is there.   Possibly some kind of permissions issue?

to diagnose this i would need the console output, activate debug logging, black out all sensitive informations and upload here please.

maybe the emby IP is wrong, or password, also check if the user has access to all libraries, since the user logging in now determines library access.

Edited by Oratorian

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...