Enjoy Plex with your friends. In Sync. Together.
Go to file
samcm 2693f65ee8 Login via pin 2017-04-07 18:15:21 +10:00
build Web 1.0 2017-04-07 15:09:03 +10:00
config Web 1.0 2017-04-07 15:09:03 +10:00
server Web 1.0 2017-04-07 15:09:03 +10:00
src Login via pin 2017-04-07 18:15:21 +10:00
static Web 1.0 2017-04-07 15:09:03 +10:00
test Web 1.0 2017-04-07 15:09:03 +10:00
.babelrc Web 1.0 2017-04-07 15:09:03 +10:00
.editorconfig Web 1.0 2017-04-07 15:09:03 +10:00
.eslintignore Web 1.0 2017-04-07 15:09:03 +10:00
.eslintrc.js Web 1.0 2017-04-07 15:09:03 +10:00
.gitattributes 0.1.0 2016-12-03 18:09:24 +11:00
.gitignore Web 1.0 2017-04-07 15:09:03 +10:00
README.md Web 1.0 2017-04-07 15:09:03 +10:00
index.html Web 1.0 2017-04-07 15:09:03 +10:00
package.json Login via pin 2017-04-07 18:15:21 +10:00

README.md

Plex Together is a tool to sync Plex content across multiple players in multiple locations.

Utilising Vue.js and Webpack, Plex Together has been rewritten and brought to the browser. While we run a live version available at plextogether.com, the project can be built and deployed completely seperate from plextogether.com. We also provide a handful of public Plex Together Server instances that everyone is free to use.

Live version

How it works

Plex Together aims to keep multiple viewing sessions in sync regardless of whether the clients are in the same room or across the globe. To do this Plex Together utilizes a middle-man server to communicate between each of Plex Together clients. Users choose their Plex client, decide on a Plex Together Server and Room name and join up. Your friends/family can do the same. Whoever joins the room first will become the host.

The host has complete control over a room. Commands they send to their client will be sent through to other people in the room (Play, Pause, Seek etc). If the host starts playing something different, Plex Together will search all of your available Plex Media Servers for an equiavalent copy, even if it is not from the same Plex Media Server as the Host.

Features

  • Syncing between Plex Clients over the Internet
  • Settings to tune Plex Together to your environment
    • Client Polling Interval - Sets how frequently Plex Together will poll the client for new information.
    • Sync Flexability - Sets the acceptable distance away from the host in milliseconds.
    • Sync method:
      • Clean seek - Seeks straight to where the host is.
      • Skip ahead - Seeks 10 seconds ahead, pauses and then resumes 10 seconds later.
  • Autoplay content
    • Plex Together will automatically search all of your available Plex Media Servers for content that is similar to the Host.
  • Metadata fetching from Plex Media Server
  • Chat to others in your room
  • Password locked rooms
  • Movies and TV Shows (Music not supported)

FAQ

  • I have to login to Plex.tv on the site, how come?

    • Plex Together uses your Plex account to fetch details about your Plex Clients and Media Servers to use within the app. While having to enter your username and password is not optimal it is the only real option until Plex implements a public OAUTH scheme.
  • Won't you have access to my username, password and Plex account?

    • All of your details are stored client side (in your browser). Absolutely none of your confidential data is sent to our server. You can verify this by inspecting the Network tab within Chrome developer tools or if you would like you can deploy Plex Together yourself - read the 'Building and deploying' section below.
  • What is sent then?

    • When you've connected to a Plex Together room, a few details are sent back and forth to the Plex Together Server to enable syncing. The data sent contains the following:
      • Plex Username
      • Plex User Thumbnail URL
      • Content playing title (Eg. Lord of the Rings: The Fellowship of the Ring)
      • Current timestamp (Eg. 00:35:02)
      • Maximum timestamp (Eg. 03:48:18)
      • Playerstate (Eg. paused, stopped, playing)
      • Client response time (Ping time between you and your Plex Client)
  • What about the public server provided by Plex Together? Is my data safe?

    • We log absolutely nothing to disk. Data is kept within the room instance until you leave or the server restarts. We have enabled SSL on our public servers but if privacy is a concern for you we strongly suggest running your own server. For more details read the 'Building and Deploying' section below.
  • Speaking of SSL, why isn't the site served over HTTPS?

    • While we would love to run the Plex Together application over HTTPS, doing so forces modern browsers in to blocking all HTTP connections. This effectively stops all communication with Plex Clients which are all HTTP.

Screenshots

Head to the website

Supported Plex Clients

Theoretically, all Plex Clients that implement the Plex Client Protocol will work. As some clients have this implemented slightly differently, compability with Plex Together may vary. If you have access to one of the untested clients please let us know so we can update our list below.

Some low powered clients may be hard to achieve a perfect sync with (for example: Raspberry Pi clients).

Supported

Computer

  • Plex Media Player
  • Plex Home Theater
  • OpenPHT

Streaming Devices

  • Apple TV
  • Rasplex
  • Roku

Mobile

  • iOS (iPhone & iPad)
  • Android

Tested and Unsupported

  • Plex Web Player (Chrome/Safari)
    • Relies on a local Plex Media Server to proxy commands. May work if you have a local PMS instance but issues may arise.

Untested

Computer

  • Windows 10 App
  • Kodi

Streaming Devices

  • Amazon Fire TV
  • Android TV
  • Chromecast
  • TiVo

TVs and Consoles

  • Xbox One
  • Xbox 360
  • PS3
  • PS4
  • Nvidia Shield
  • Smart TV

Mobile

  • Windows Phone

Contributing

Please use the Issue tracker here on Github for Issues & Feature requests. We'll gladly merge Pull requests if you're keen to get hands on with the development.

Building and deploying

Building the app:

  • Make sure you have Node v6+ installed

    • git clone https://github.com/samcm/plextogether
    • cd plextogether
    • npm install
    • npm run build
  • When complete, copy the contents of dist/ to the root of your web server.

Running the server:

  • Make sure you have Node v6+ installed

    • git clone https://github.com/samcm/plextogether
    • cd plextogether
    • cd server
    • npm install
    • node server.js
  • The server will now be listening on all interfaces on port 8089. Note: you may have to port forward if you are behind a router.

Developing

You need:

  • Node v6+

    • git clone https://github.com/samcm/plextogether
    • cd plextogether
    • npm install
    • npm run dev
  • Once Webpack has finished compiling, navigate to http://localhost:8080 in your web browser.

Issues

If you run in to any issues:

  • Raise an Issue here on Github. Try to be as detailed as possible by including details such as:

    • Operating System
      • Web Browser name and version
    • Plex Media Server details
      • Version
      • Operating System
      • Location (Local/Remote)
    • Plex Client details
      • Name
      • Version
      • Network connection (Wired/Wifi)
      • Platform
  • Join the Discord Server and raise your issue.

Contributors

samcm - Developer

pureMidi - User Interface

Brandz - Design

TheGrimmChester - Developer/Tester

kg6jay - Tester

Contact

Discord Server

Twitter: Plex Together

License

Plex Together is licensed under MIT License. See the LICENSE.txt file. Plex Together is in no way affiliated with Plex Inc.