Sign inSign up

cplieger/plex-language-sync

By cplieger

•Updated about 8 hours ago

Pick a show's audio and subtitle languages once in Plex, and every episode follows

Image
Content management system
0

10K+

cplieger/plex-language-sync repository overview

⁠plex-language-sync

plex-language-sync remembers the audio and subtitle languages you pick for each TV show in Plex and sets them on every other episode, for each user of your server. It chooses between the tracks your files already have and downloads nothing.

⁠What it does

plex-language-sync keeps a show on the audio and subtitles you pick once, in four ways:

  • Sets your choice on the rest of the show as soon as you pick it on one episode.
  • Gives new episodes the same tracks when Plex adds them.
  • Learns which subtitles you pair with each audio language, and sets them on new shows Plex adds.
  • Keeps a separate choice for every user your server is shared with.

You can limit it to the current season or to later episodes, and leave out shows or libraries.

⁠Who it is for

plex-language-sync is built for Plex servers where people watch TV shows in more than one language, such as anime in Japanese with English subtitles, or a household with different preferences. It handles TV episodes only, never movies, and has no web page. Without it, you would pick the audio and subtitle track in the player on every episode.

You need a Plex Media Server and its owner's Plex token. To follow shared users, the container also needs internet access to reach plex.tv.

plex-language-sync is free software under the GPL-3.0-or-later license.

⁠Pull

docker pull cplieger/plex-language-sync:latest

Also published to ghcr.io/cplieger/plex-language-sync with identical images and tags. Release versions are tagged vX.Y.Z alongside latest.

⁠Quick start

# Example compose for plex-language-sync. See the README for all configuration options and hardening.
services:
  plex-language-sync:
    image: ghcr.io/cplieger/plex-language-sync:latest
    container_name: plex-language-sync
    restart: unless-stopped
    stop_grace_period: 20s  # time to save what it learned on stop. Docker's 10s default is too short
    # Run "sudo mkdir -p /opt/appdata/plex-language-sync && sudo chown 1000:1000 /opt/appdata/plex-language-sync"
    # before the first start, or nothing it learns is saved. If .env sets PUID and PGID, use those numbers.
    user: "${PUID:-1000}:${PGID:-1000}"

    environment:
      - PLEX_URL  # from .env, the address you open Plex at, such as http://192.0.2.10:32400
      - PLEX_TOKEN  # from .env, the server owner's Plex token, or set PLEX_TOKEN_FILE to a Docker secret
      - "UPDATE_LEVEL=show"  # show = whole show, season = current season only
      - "UPDATE_STRATEGY=all"  # all = every episode, next = only the episodes after the one you played

    volumes:
      - "/opt/appdata/plex-language-sync:/config"  # what it learns, the shared users' tokens and its schedule

⁠Documentation

⁠License

GPL-3.0-or-later. See LICENSE⁠. The image carries the license text of every bundled component under /usr/share/licenses/.

Tag summary

Content type

Image

Digest

sha256:fe8a1a7db…

Size

4.1 MB

Last updated

about 8 hours ago

docker pull cplieger/plex-language-sync