Skip to main content

Plexy

Your Plex, your way

Latest Version

tests

License

Info

Plexy is a command line tool to save your watching preferences in Plex.

Dubbed or Original audio, it's up to you.

  • For Dubbed preference, Plexy will auto-select the audio track with your desired language. If no audio track is found, Plexy will auto-select the subtitle track with your desired language.
  • For Original preference, Plexy will auto-select the default/original audio track and the subtitle track in your desired language.

Priorities:

  • Commentary audio tracks have lower priority when selecting audio tracks
  • Closed caption and SDH subtitle tracks also have lower priority when selecting subtitles

To select Brazilian Portuguese language with original audio

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language pt-BR original

To select English language with dubbed audio

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language en dubbed

To select French language with original audio only for Game of Thrones

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language fr --title "Game of Thrones" original

To select German language with dubbed audio only for Mandalorian Season 2

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language fr --title "Mandalorian s02" dubbed

To select German language with dubbed audio only for Game of Thrones, season 3 and episode 9

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language fr --title "Game of Thrones s03e09" dubbed

To select Spanish language with dubbed audio only for all Matrix movies and the first Avatar movie

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language es --title "Matrix" --title "Avatar (2009)" dubbed

To select Portuguese language with original audio for everything added to your libraries in the last week

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language pt --newer 1w original

To select Brazilian Portuguese language with original audio for everything added to your "Movie" library before the last week

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --library Movie --language pt-BR --older 1w original

You can also select or exclude tracks based on their codec/format. For instance, you have a Chromecast with Google TV which doesn't support Dolby TrueHD audio codec. You can exclude this codec when saving your preferences:

>> plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language pt-BR -A truehd original

And print the full summary of changes:

>> plexy --url http://mylocalplex:32400 --token ABCDEFGHIJ1234567890 preferences -f -l en --title "The Matrix (1999)" original
Configuring watching preferences  [####################################]  100%
1 movie changed out of 1 selected movie
The Matrix (1999) changed from pt-BR: Português (SRT External) to no subtitles

You can also define your configuration options in a json or yaml file:

url: http://myplexserver:32400
token: ABCDEFGHIJ1234567890
preferences:
  library:
    - Movies
    - TV Shows
  excluded_subtitle_codec:
    - eia_608
  full_summary: True
  language: pt-BR
  watching_preference: original

By default, plexy will load config.json, config.yaml or config.yml file from the folders:

  • Mac OS: ~/Library/Preferences/plexy
  • Linux: ~/.config/plexy/
  • Windows: C:\Users\<USER>\AppData\Local\plexy\plexy

And then update the configuration with data from plexy.json, plexy.yaml or plexy.yml in the current working directory.

You can pass the configuration to use with the --config parameter:

>> plexy --config myconfig.yml preferences
Configuring watching preferences  [####################################]  100%
1 movie changed out of 1 selected movie
The Matrix (1999) changed from pt-BR: Português (SRT External) to no subtitles

All available CLI options:

>> plexy --url <PLEX_URL> --token <USER_TOKEN> preferences --help
Usage: plexy preferences [OPTIONS] {original|dubbed}

  Your watching preferences

  Dubbed prefers an audio track with the desired language.
  Original prefers the original audio and an additional subtitle track if the audio is not in the desired language.

Options:
  -L, --library TEXT              Library to be used. e.g: Movies, Shows.
  -t, --title TITLE               Filter for titles in your library. It could refer to a movie, a
                                  show, a season or an episode. e.g: Avatar, The Matrix (1999),
                                  The Boys s2, Chernobyl s01e03, Game of Thrones (2011) s03e09
  -l, --language LANGUAGE         Desired watching language as IETF code, e.g.: en, pt-BR.
  -a, --audio-codec [dca|aac|ac3|eac3|truehd|flac|mp2|mp3|vorbis|pcm]
                                  Accepted audio codec.
  -A, --excluded-audio-codec [dca|aac|ac3|eac3|truehd|flac|mp2|mp3|vorbis|pcm]
                                  Excluded audio codec.
  -s, --subtitle-codec [srt|pgs|vobsub|ass|mov_text|eia_608|dvb_subtitle]
                                  Accepted subtitle codec.
  -S, --excluded-subtitle-codec [srt|pgs|vobsub|ass|mov_text|eia_608|dvb_subtitle]
                                  Excluded subtitle codec.
  -n, --newer-than AGE            Filter movies/episodes newer than AGE, e.g. 12h, 1w2d
  -o, --older-than AGE            Filter movies/episodes older than AGE, e.g. 12h, 1w2d
  -f, --full-summary              Print the full summary of changed preferences.
  --skip-watching                 Skip movies/episodes that watch is in progress.
  --keep-selected-audio           Do not change the selected audio. Useful when using original
                                  watching preference.
  --keep-selected-subtitle        Do not change the selected subtitle.
  --force-subtitles               Select subtitles, even when the audio already matches the
                                  desired language.
  --debug                         Print useful information for debugging and for reporting bugs.
  --help                          Show this message and exit.

Using Docker

docker run -it --rm plexy --url http://mylocalplex:32400 --token ABCDEF1234567890 preferences --language pt-BR -A truehd original

Installation

Plexy can be installed as a regular python module by running:

$ [sudo] pip install plexy

For a better isolation with your system you should use a dedicated virtualenv or install for your user only using the --user flag.

Dependencies

Release files for plexy 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plexy 0.2.0
File Size Uploaded
plexy-0.2.0.tar.gz 67.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for plexy 0.2.0
File Interpreter ABI Platform
plexy-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 81.7 kB

Release files / plexy-0.2.0.tar.gz

Download URL plexy-0.2.0.tar.gz
Size 67.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0ca1259f2487a0558a2c2a9063c703c67819a7bf074c213c875fb052755ebcf4
BLAKE2b-256 checksum
How to use checksums
d00928638829e56f3614042c7f6cc406a2006e681895bad51e698b2fe6c6bd73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / plexy-0.2.0-py3-none-any.whl

Download URL plexy-0.2.0-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a94dcaa0fcc272cbb2a12a053d14f25d365c6efebaab97af9786614e6bb0074
BLAKE2b-256 checksum
How to use checksums
9117765afbebaf70f3fb73030dffb019fb447914ee780f05cfc037ef172ef753
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page