Skip to content

Run Commands & Environment Variables

The basic command to run Plex Meta Manager is as follows:

python plex_meta_manager.py
docker run --rm -it -v "/<ROOT_PMM_DIRECTORY_HERE>/config:/config:rw" meisnate12/plex-meta-manager

To customize the running of Plex Meta Manager according to your needs, you can use either run commands or environmental variables. Environmental variables take precedence over run command attributes. However, if you encounter a race condition where an attribute has been set both via an environmental variable and a shell command, the environmental variable will be given priority.

Please note that these instructions assume that you have a basic understanding of Docker concepts. If you need to familiarize yourself with Docker, you can check out the official tutorial.

Another way to specify environmental variables is by adding them to a .env file located in your config folder.

Environment variables are expressed as KEY=VALUE depending on the context where you are specifying them, you may enter those two things in two different fields, or some other way. The examples below show how you would specify the environment variable in a script or a docker run command. Things like Portainer or a NAS Docker UI will have different ways to specify these things.

Config Location      -c/--config      PMM_CONFIG

Specify the location of the configuration YAML file. Will default to config/config.yml when not specified.


Accepted Values: Path to YAML config file

Shell Flags: -c or --config (ex. --config /data/config.yml)

Environment Variable: PMM_CONFIG (ex. PMM_CONFIG=/data/config.yml)

Example

python plex_meta_manager.py --config /data/config.yml
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /data/config.yml
Time to Run      -t/--times      PMM_TIMES

Specify the time of day that Plex Meta Manager will run. Will default to 05:00 when not specified.


Accepted Values: Comma-separated list in HH:MM format

Shell Flags: -t or --times (ex. --times 06:00,18:00)

Environment Variable: PMM_TIMES (ex. PMM_TIMES=06:00,18:00)

Example

python plex_meta_manager.py --times 22:00,03:00
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --times 22:00,03:00
Run Immediately      -r/--run      PMM_RUN

Perform a run immediately, bypassing the time to run flag.


Shell Flags: -r or --run (ex. --run)

Environment Variable: PMM_RUN (ex. PMM_RUN=true)

Example

python plex_meta_manager.py --run
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --run
Run Tests      -ts/--tests      PMM_TESTS

Perform a debug test run immediately, bypassing the time to run flag. This will only run collections with test: true in the definition.


Shell Flags: -ts or --tests (ex. --tests)

Environment Variable: PMM_TESTS (ex. PMM_TESTS=true)

Example

python plex_meta_manager.py --tests
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --tests

In my collection YAML file, I would set true: false like this:

collections:
  Marvel Cinematic Universe:
    test: true                  # HERE
    trakt_list: https://trakt.tv/users/jawann2002/lists/marvel-cinematic-universe-movies?sort=rank,asc
    smart_label: release.desc
Debug      -db/--debug      PMM_DEBUG

Perform a debug test run immediately, bypassing the time to run flag. This will only run collections with test: true in the definition.


Shell Flags: -db or --debug (ex. --debug)

Environment Variable: PMM_DEBUG (ex. PMM_DEBUG=true)

Example

python plex_meta_manager.py --debug
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --debug
Trace      -tr/--trace      PMM_TRACE

Run with extra Trace Debug Logs.


Shell Flags: -tr or --trace (ex. --trace)

Environment Variable: PMM_TRACE (ex. PMM_TRACE=true)

Example

python plex_meta_manager.py --trace
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --trace
Log Requests      -lr/--log-requests      PMM_LOG_REQUESTS

Run with every network request printed to the Logs. This can potentially have personal information in it.


Shell Flags: -lr or --log-requests (ex. --log-requests)

Environment Variable: PMM_LOG_REQUESTS (ex. PMM_LOG_REQUESTS=true)

Example

python plex_meta_manager.py --log-requests
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --log-requests
Timeout      -ti/--timeout      PMM_TIMEOUT

Change the timeout for all non-Plex services (such as TMDb, Radarr, and Trakt). This will default to 180 when not specified and is overwritten by any timeouts mentioned for specific services in the Configuration File.


Accepted Values: Integer Number of Seconds

Shell Flags: -ti or --timeout (ex. --timeout 06:00,18:00)

Environment Variable: PMM_TIMEOUT (ex. PMM_TIMEOUT=06:00,18:00)

Example

python plex_meta_manager.py --timeout 360
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --timeout 360
Collections Only      -co/--collections-only      PMM_COLLECTIONS_ONLY

Only run collection YAML files, skip library operations, metadata, overlays, and playlists.


Shell Flags: -co or --collections-only (ex. --collections-only)

Environment Variable: PMM_COLLECTIONS_ONLY (ex. PMM_COLLECTIONS_ONLY=true)

Example

python plex_meta_manager.py --collections-only
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --collections-only
Metadata Only      -mo/--metadata-only      PMM_METADATA_ONLY

Only run metadata files, skip library operations, collections, overlays, and playlists.


Shell Flags: -mo or --metadata-only (ex. --metadata-only)

Environment Variable: PMM_METADATA_ONLY (ex. PMM_METADATA_ONLY=true)

Example

python plex_meta_manager.py --metadata-only
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --metadata-only
Playlists Only      -po/--playlists-only      PMM_PLAYLISTS_ONLY

Only run playlist YAML files, skip library operations, overlays, collections, and metadata.


Shell Flags: -po or --playlists-only (ex. --playlists-only)

Environment Variable: PMM_PLAYLISTS_ONLY (ex. PMM_PLAYLISTS_ONLY=true)

Example

python plex_meta_manager.py --playlists-only
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --playlists-only
Operations Only      -op/--operations-only      PMM_OPERATIONS_ONLY

Only run library operations skipping collections, metadata, playlists, and overlays.


Shell Flags: -op or --operations-only (ex. --operations-only)

Environment Variable: PMM_OPERATIONS_ONLY (ex. PMM_OPERATIONS_ONLY=true)

Example

python plex_meta_manager.py --operations-only
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --operations-only
Overlays Only      -ov/--overlays-only      PMM_OVERLAYS_ONLY

Only run library overlay files skipping collections, metadata, playlists, and operations.


Shell Flags: -ov or --overlays-only (ex. --overlays-only)

Environment Variable: PMM_OVERLAYS_ONLY (ex. PMM_OVERLAYS_ONLY=true)

Example

python plex_meta_manager.py --overlays-only
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --overlays-only
Run Collections      -rc/--run-collections      PMM_RUN_COLLECTIONS

Perform a collections run immediately to run only the pre-defined collections, bypassing the time to run flag.


Accepted Values: Pipe-separated list of Collection Names to run; the "pipe" character is "|" as shown in the examples below.

Shell Flags: -rc or --run-collections (ex. --run-collections "Harry Potter|Star Wars")

Environment Variable: PMM_RUN_COLLECTIONS (ex. PMM_RUN_COLLECTIONS=Harry Potter|Star Wars)

Example

python plex_meta_manager.py --run-collections "Harry Potter|Star Wars"
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --run-collections "Harry Potter|Star Wars"
Run Libraries      -rl/--run-libraries      PMM_RUN_LIBRARIES

Perform a libraries run immediately to run only the pre-defined libraries, bypassing the time to run flag.


Accepted Values: Pipe-separated list of Library Names to run; the "pipe" character is "|" as shown in the examples below.

Shell Flags: -rl or --run-libraries (ex. --run-libraries "Movies - 4K|TV Shows - 4K")

Environment Variable: PMM_RUN_LIBRARIES (ex. PMM_RUN_LIBRARIES=Movies - 4K|TV Shows - 4K)

Example

python plex_meta_manager.py --run-libraries "Movies - 4K|TV Shows - 4K"
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --run-libraries "Movies - 4K|TV Shows - 4K"
Run Files      -rf/--run-files      PMM_RUN_FILES

Perform a run immediately to run only the pre-defined Collection, Metadata or Playlist files, bypassing the time to run flag. This works for all different paths i.e. pmm, git, url, file, or repo.

Warning

Do not use this to run Overlay files, as Overlay files must run all together or not at all due to their nature.


Accepted Values: Pipe-separated list of Collection, Metadata or Playlist Filenames to run; the "pipe" character is "|" as shown in the examples below.

Shell Flags: -rf or --run-files (ex. --run-files "Movies.yml|MovieCharts")

Environment Variable: PMM_RUN_FILES (ex. PMM_RUN_FILES=Movies.yml|MovieCharts)

Example

python plex_meta_manager.py --run-files "Movies.yml|MovieCharts"
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --run-files "Movies.yml|MovieCharts"
Ignore Schedules      -is/--ignore-schedules      PMM_IGNORE_SCHEDULES

Ignore all schedules for the run. Range Scheduled collections (such as Christmas movies) will still be ignored.


Shell Flags: -is or --ignore-schedules (ex. --ignore-schedules)

Environment Variable: PMM_IGNORE_SCHEDULES (ex. PMM_IGNORE_SCHEDULES=true)

Example

python plex_meta_manager.py --ignore-schedules
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --ignore-schedules
Ignore Ghost      -ig/--ignore-ghost      PMM_IGNORE_GHOST

Ignore all ghost logging for the run. A ghost log is what's printed to the console to show progress during steps.


Shell Flags: -ig or --ignore-ghost (ex. --ignore-ghost)

Environment Variable: PMM_IGNORE_GHOST (ex. PMM_IGNORE_GHOST=true)

Example

python plex_meta_manager.py --ignore-ghost
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --ignore-ghost
Delete Collections      -dc/--delete-collections      PMM_DELETE_COLLECTIONS

Delete all collections in a Library prior to running collections/operations.

Warning

You will lose all collections in the library - this will delete all collections, including ones not created or maintained by Plex Meta Manager.


Shell Flags: -dc or --delete-collections (ex. --delete-collections)

Environment Variable: PMM_DELETE_COLLECTIONS (ex. PMM_DELETE_COLLECTIONS=true)

Example

python plex_meta_manager.py --delete-collections
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --delete-collections
Delete Labels      -dl/--delete-labels      PMM_DELETE_LABELS

Delete all labels on every item in a Library prior to running collections/operations.

Warning

To preserve functionality of PMM, this will not remove the Overlay label, which is required for PMM to know which items have Overlays applied.

This will impact any Smart Label Collections that you have in your library.

We do not recommend using this on a regular basis if you also use any operations or collections that update labels, as you are effectively deleting and adding labels on each run.


Shell Flags: -dl or --delete-labels (ex. --delete-labels)

Environment Variable: PMM_DELETE_LABELS (ex. PMM_DELETE_LABELS=true)

Example

python plex_meta_manager.py --delete-labels
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --delete-labels
Resume Run      -re/--resume      PMM_RESUME

Perform a resume run immediately resuming from the first instance of the specified collection, bypassing the time to run flag.


Shell Flags: -re or --resume (ex. --resume "Star Wars")

Environment Variable: PMM_RESUME (ex. PMM_RESUME=Star Wars)

Example

python plex_meta_manager.py --resume "Star Wars"
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --resume "Star Wars"
No Countdown      -nc/--no-countdown      PMM_NO_COUNTDOWN

Run without displaying a countdown to the next scheduled run.


Shell Flags: -nc or --no-countdown (ex. --no-countdown)

Environment Variable: PMM_NO_COUNTDOWN (ex. PMM_NO_COUNTDOWN=true)

Example

python plex_meta_manager.py --no-countdown
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --no-countdown
No Missing      -nm/--no-missing      PMM_NO_MISSING

Run without utilizing the missing movie/show functions.


Shell Flags: -nm or --no-missing (ex. --no-missing)

Environment Variable: PMM_NO_MISSING (ex. PMM_NO_MISSING=true)

Example

python plex_meta_manager.py --no-missing
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --no-missing
No Report      -nr/--no-report      PMM_NO_REPORT

Run without saving the report.


Shell Flags: -nr or --no-report (ex. --no-report)

Environment Variable: PMM_NO_REPORT (ex. PMM_NO_REPORT=true)

Example

python plex_meta_manager.py --no-report
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --no-report
Read Only Config      -ro/--read-only-config      PMM_READ_ONLY_CONFIG

Run without writing to the configuration file.


Shell Flags: -ro or --read-only-config (ex. --read-only-config)

Environment Variable: PMM_READ_ONLY_CONFIG (ex. PMM_READ_ONLY_CONFIG=true)

Example

python plex_meta_manager.py --read-only-config
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --read-only-config
Divider Character      -d/--divider      PMM_DIVIDER

Change the terminal output divider character. Will default to = if not specified.


Accepted Values: Any character

Shell Flags: -d or --divider (ex. --divider *)

Environment Variable: PMM_DIVIDER (ex. PMM_DIVIDER=*)

Example

docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --divider *
python plex_meta_manager.py --divider *

Screen Width      -w/--width      PMM_WIDTH

Change the terminal output width. Will default to 100 if not specified.


Accepted Values: Integer between 90 and 300

Shell Flags: -w or --width (ex. --width 150)

Environment Variable: PMM_WIDTH (ex. PMM_WIDTH=150)

Example

python plex_meta_manager.py --width 150
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --width 150
Config Secrets      --pmm-***      PMM_***

All Run Commands that are in the format --pmm-*** and Environment Variables that are in the format PMM_***, where *** is the name you want to call the vaiable, will be loaded in as Config Secrets.

These Config Secrets can be loaded into the config by placing <<***>> in any field in the config, where *** is whatever name you called the variable.


Shell Flags: --pmm-*** (ex. --pmm-mysecret 123456789)

Environment Variable: PMM_*** (ex. PMM_MYSECRET=123456789)

Example

python plex_meta_manager.py --pmm-mysecret 123456789
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --pmm-mysecret 123456789

Example Config Usage:

tmdb:
  apikey: <<mysecret>>