Sync watched status between jellyfin, plex and emby locally
 
 
 
Go to file
Luigi311 7bb76f62a5
Merge pull request #117 from luigi311/dependabot/pip/aiohttp-3.9.0
Bump aiohttp from 3.8.6 to 3.9.0
2023-12-06 12:07:40 -07:00
.github Action: Limit ghcr push to luigi311 2023-12-06 12:04:32 -07:00
.vscode Force format on save in vscode 2023-03-09 00:53:07 -07:00
src MARKFILE match LOGFILE 2023-11-13 02:30:11 -07:00
test Pin pytest version 2023-04-13 02:26:12 +02:00
.dockerignore Update Dockerfile to use the alpine Python 3 base image 2023-04-13 02:26:04 +02:00
.env.sample Add mark list support 2023-11-13 01:12:08 -07:00
.gitignore Use async for jellyfin (#23) 2022-07-10 01:30:12 -06:00
Dockerfile.alpine Use non root for containers 2023-11-13 03:36:10 -07:00
Dockerfile.slim Use non root for containers 2023-11-13 03:36:10 -07:00
LICENSE Use async for jellyfin (#23) 2022-07-10 01:30:12 -06:00
README.md README: Change configuration to point to .env.sample 2023-11-13 03:39:29 -07:00
docker-compose.yml Docker-compose: Add markfile. Add user mapping ex 2023-11-13 02:49:14 -07:00
main.py Black cleanup 2022-08-17 22:31:23 -06:00
requirements.txt Bump aiohttp from 3.8.6 to 3.9.0 2023-11-28 01:04:37 +00:00

README.md

JellyPlex-Watched

Codacy Badge

Sync watched between jellyfin and plex locally

Description

Keep in sync all your users watched history between jellyfin and plex servers locally. This uses file names and provider ids to find the correct episode/movie between the two. This is not perfect but it works for most cases. You can use this for as many servers as you want by entering multiple options in the .env plex/jellyfin section separated by commas.

Features

Plex

  • x] Match via filenames
    
  • x] Match via provider ids
    
  • x] Map usernames
    
  • x] Use single login
    
  • x] One way/multi way sync
    
  • x] Sync watched
    
  • x] Sync in progress
    
    

Jellyfin

  • x] Match via filenames
    
  • x] Match via provider ids
    
  • x] Map usernames
    
  • x] Use single login
    
  • x] One way/multi way sync
    
  • x] Sync watched
    
  •  ] Sync in progress
    
    

Emby

  •  ] Match via filenames
    
  •  ] Match via provider ids
    
  •  ] Map usernames
    
  •  ] Use single login
    
  •  ] One way/multi way sync
    
  •  ] Sync watched
    
  •  ] Sync in progress
    
    

Configuration

Full list of configuration options can be found in the .env.sample

Installation

Baremetal

  • Setup virtualenv of your choice

  • Install dependencies

      pip install -r requirements.txt
    
  • Create a .env file similar to .env.sample, uncomment whitelist and blacklist if needed, fill in baseurls and tokens

  • Run

    python main.py
    

Docker

  • Build docker image

    docker build -t jellyplex-watched .
    
  • or use pre-built image

    docker pull luigi311/jellyplex-watched:latest
    

With variables

  • Run

    docker run --rm -it -e PLEX_TOKEN='SuperSecretToken' luigi311/jellyplex-watched:latest
    

With .env

  • Create a .env file similar to .env.sample and set the variables to match your setup

  • Run

     docker run --rm -it -v "$(pwd)/.env:/app/.env" luigi311/jellyplex-watched:latest
    

Contributing

I am open to receiving pull requests. If you are submitting a pull request, please make sure run it locally for a day or two to make sure it is working as expected and stable. Make all pull requests against the dev branch and nothing will be merged into the main without going through the lower branches.

License

This is currently under the GNU General Public License v3.0.