Run Commands & Environment Variables¶
What does it mean to "run" Kometa?¶
The word "run" in the Kometa context can be used in two ways; you "run" the Kometa Python script itself, using a Python or docker command, and then that script behaves in one of two ways:
- It sits and waits until a particular time, wakes up and processes the config file, then goes back to sleep until that same time the next day. Kometa does this unless you specifically tell it to do otherwise.
- It processes the config file right away and then exits.
"Processes the config file" means that it will go through all the collections, metadata, overlays, playlists, and libraries that you have defined in your config file and do what you have told it to do with them.
That's kind of a mouthful, though, so we typically use "run" to describe that bit of the process.
In these docs, and in the discord when providing support, we'll use "run" to describe the "process the config file" bit.
The basic command to execute Kometa is as follows:
As discussed above, that will start Kometa, which will then wait until 5AM to wake up and process the config file.
The basic command to execute Kometa, telling it to run right this second, is as follows:
Modifying Kometa's default (or configured) runtime behavior.¶
If you want to modify the way Kometa behaves when it runs, you can use the commands on this page. None of these are required to run Kometa. They are all optional and can be used to customize the way Kometa runs to suit your needs.
Many of these override settings in the config file, so you can use them to change the way Kometa behaves without having to edit the config file.
You can set any of these flags as either environment variables or as command line arguments.
On all platforms, "environment variables" are a way to set variables that are available to all programs running on the system. You can set these variables in your shell, in a script, or in a Docker container.
You might think of this as a note on your desk that tells you Sue likes a skim latte when you go to the coffee shop. You can use that note to remember what Sue likes when she asks "please get me a coffee".
Runtime flags are command line arguments that you can pass to Kometa when you run it to change the way it behaves.
You might think of this as a directive Bob adds when he asks "please get me a coffee, a flat white". At "runtime", Bob is adding a "flag" to his request to indicate the type of coffee.
All these settings have defaults, which you can think of as the "standard coffee" that you get if someone doesn't specify anything. If Chris doesn't specify a type of coffee, and you have no note about Chris, Chris gets the default, a plain black coffee.
If you don't specify a runtime flag or environment variable, you get the standard/default behavior.
Runtime Flags vs Environment Variables; who wins?¶
The ridiculous example above notwithstanding, in Kometa, environment variables take precedence over runtime flags.
For example, and it's not important what this does, but if you were to use the following script:
export KOMETA_CONFIG=/path/to/environment/config.yml # this sets an environment variable
python kometa.py --config /path/to/runtime-var/config.yml # runtime flag for the same setting
Kometa would use the config file at /path/to/environment/config.yml because the environment variable takes precedence over the runtime flag.
Please note that these instructions assume that you have a basic understanding of command line and Docker concepts. If you need to familiarize yourself with Docker, you can check out the official tutorial.
I want to set a lot of these things, what's the best way?¶
One way to specify environmental variables is by adding them to a .env file located in your config folder.
That file would contain something like:
KOMETA_CONFIG=/path/to/your-config-file.yml
KOMETA_TIMES=06:00|18:00
KOMETA_TRACE=true
KOMETA_LOG_REQUESTS=true
KOMETA_TIMEOUT=360
KOMETA_NO_VERIFY_SSL=true
KOMETA_COLLECTIONS_ONLY=true
Kometa will load those environment variables when it starts up, and you don't have to remember to set them every time you run Kometa.
Combining Commands or Variables
Some Commands or Variables can be combined in a single run, this is mainly beneficial when you want to run a specific command and have it run immediately rather than waiting until the next scheduled run.
For example, if I want to run Collections Only to only run Collection Files, and Run Immediately to skip waiting until my next scheduled run, I can use both commands at the same time:
All Available Runtime Flags/Environment Variables¶
Config Location -c/--config KOMETA_CONFIG¶
config/config.yml. If you want to change that, perhaps to use a special-purpose config.yml or the like,
you can use this flag to specify the location of the configuration YAML file.
Accepted Values: Path to YAML config file
Shell Flags: -c or --config (ex. --config /some/path/to/your-config-file.yml)
Environment Variable: KOMETA_CONFIG (ex. KOMETA_CONFIG=/some/path/to/your-config-file.yml)
Time to Run -t/--times KOMETA_TIMES¶
Accepted Values: Pipe-separated list in HH:MM format
Shell Flags: -t or --times (ex. --times "06:00|18:00")
Environment Variable: KOMETA_TIMES (ex. KOMETA_TIMES=06:00|18:00)
Run Immediately -r/--run KOMETA_RUN¶
Run Tests -ts/--tests KOMETA_TESTS¶
true, Kometa will run only collections that you have marked as test immediately, as KOMETA_RUN.
NOTE: This will only run collections with test: true in the definition.
Shell Flags: -ts or --tests (ex. --tests)
Environment Variable: KOMETA_TESTS (ex. KOMETA_TESTS=true)
Example
Debug -db/--debug KOMETA_DEBUG¶
Trace -tr/--trace KOMETA_TRACE¶
true.
Shell Flags: -tr or --trace (ex. --trace)
Environment Variable: KOMETA_TRACE (ex. KOMETA_TRACE=true)
Log Requests -lr/--log-requests KOMETA_LOG_REQUESTS¶
This can potentially have personal information in it.
Shell Flags: -lr or --log-requests (ex. --log-requests)
Environment Variable: KOMETA_LOG_REQUESTS (ex. KOMETA_LOG_REQUESTS=true)
Timeout -ti/--timeout KOMETA_TIMEOUT¶
180 when not specified and is overwritten by any timeouts mentioned for specific services in the Configuration File.
Accepted Values: Integer (value is in seconds)
Shell Flags: -ti or --timeout (ex. --timeout 360)
Environment Variable: KOMETA_TIMEOUT (ex. KOMETA_TIMEOUT=360)
No Verify SSL -nv/--no-verify-ssl KOMETA_NO_VERIFY_SSL¶
Note
set to false if your log file shows any errors similar to "SSL: CERTIFICATE_VERIFY_FAILED"
Shell Flags: -nv or --no-verify-ssl (ex. --no-verify-ssl)
Environment Variable: KOMETA_NO_VERIFY_SSL (ex. KOMETA_NO_VERIFY_SSL=true)
Collections Only -co/--collections-only KOMETA_COLLECTIONS_ONLY¶
Shell Flags: -co or --collections-only (ex. --collections-only)
Environment Variable: KOMETA_COLLECTIONS_ONLY (ex. KOMETA_COLLECTIONS_ONLY=true)
Metadata Only -mo/--metadata-only KOMETA_METADATA_ONLY¶
Shell Flags: -mo or --metadata-only (ex. --metadata-only)
Environment Variable: KOMETA_METADATA_ONLY (ex. KOMETA_METADATA_ONLY=true)
Playlists Only -po/--playlists-only KOMETA_PLAYLISTS_ONLY¶
Shell Flags: -po or --playlists-only (ex. --playlists-only)
Environment Variable: KOMETA_PLAYLISTS_ONLY (ex. KOMETA_PLAYLISTS_ONLY=true)
Operations Only -op/--operations-only KOMETA_OPERATIONS_ONLY¶
Shell Flags: -op or --operations-only (ex. --operations-only)
Environment Variable: KOMETA_OPERATIONS_ONLY (ex. KOMETA_OPERATIONS_ONLY=true)
Overlays Only -ov/--overlays-only KOMETA_OVERLAYS_ONLY¶
Shell Flags: -ov or --overlays-only (ex. --overlays-only)
Environment Variable: KOMETA_OVERLAYS_ONLY (ex. KOMETA_OVERLAYS_ONLY=true)
Run Collections -rc/--run-collections KOMETA_RUN_COLLECTIONS¶
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: KOMETA_RUN_COLLECTIONS (ex. KOMETA_RUN_COLLECTIONS=Harry Potter|Star Wars)
Run Libraries -rl/--run-libraries KOMETA_RUN_LIBRARIES¶
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: KOMETA_RUN_LIBRARIES (ex. KOMETA_RUN_LIBRARIES=Movies - 4K|TV Shows - 4K)
Run Files -rf/--run-files KOMETA_RUN_FILES¶
default, 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: KOMETA_RUN_FILES (ex. KOMETA_RUN_FILES=Movies.yml|MovieCharts)
Ignore Schedules -is/--ignore-schedules KOMETA_IGNORE_SCHEDULES¶
Shell Flags: -is or --ignore-schedules (ex. --ignore-schedules)
Environment Variable: KOMETA_IGNORE_SCHEDULES (ex. KOMETA_IGNORE_SCHEDULES=true)
Ignore Ghost -ig/--ignore-ghost KOMETA_IGNORE_GHOST¶
Shell Flags: -ig or --ignore-ghost (ex. --ignore-ghost)
Environment Variable: KOMETA_IGNORE_GHOST (ex. KOMETA_IGNORE_GHOST=true)
Delete Collections -dc/--delete-collections KOMETA_DELETE_COLLECTIONS¶
Warning
You will lose all collections in the library - this will delete all collections, including ones not created or maintained by Kometa.
Shell Flags: -dc or --delete-collections (ex. --delete-collections)
Environment Variable: KOMETA_DELETE_COLLECTIONS (ex. KOMETA_DELETE_COLLECTIONS=true)
Delete Labels -dl/--delete-labels KOMETA_DELETE_LABELS¶
Warning
To preserve functionality of Kometa, this will not remove the Overlay label, which is required for Kometa 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: KOMETA_DELETE_LABELS (ex. KOMETA_DELETE_LABELS=true)
Resume Run -re/--resume KOMETA_RESUME¶
Shell Flags: -re or --resume (ex. --resume "Star Wars")
Environment Variable: KOMETA_RESUME (ex. KOMETA_RESUME=Star Wars)
No Countdown -nc/--no-countdown KOMETA_NO_COUNTDOWN¶
Shell Flags: -nc or --no-countdown (ex. --no-countdown)
Environment Variable: KOMETA_NO_COUNTDOWN (ex. KOMETA_NO_COUNTDOWN=true)
No Missing -nm/--no-missing KOMETA_NO_MISSING¶
Shell Flags: -nm or --no-missing (ex. --no-missing)
Environment Variable: KOMETA_NO_MISSING (ex. KOMETA_NO_MISSING=true)
No Report -nr/--no-report KOMETA_NO_REPORT¶
Shell Flags: -nr or --no-report (ex. --no-report)
Environment Variable: KOMETA_NO_REPORT (ex. KOMETA_NO_REPORT=true)
Read Only Config -ro/--read-only-config KOMETA_READ_ONLY_CONFIG¶
config.yml on each run;this makes the formatting consistent and ensures
that you have visibility into new settings that get added. If you want to disable this behavior and tell Kometa to leave your config.yml as-is, use this flag.
Shell Flags: -ro or --read-only-config (ex. --read-only-config)
Environment Variable: KOMETA_READ_ONLY_CONFIG (ex. KOMETA_READ_ONLY_CONFIG=true)
Divider Character -d/--divider KOMETA_DIVIDER¶
=. If you wish to change that character to a different one, you can do that with this flag.
Accepted Values: Any character
Shell Flags: -d or --divider (ex. --divider *)
Environment Variable: KOMETA_DIVIDER (ex. KOMETA_DIVIDER=*)
Screen Width -w/--width KOMETA_WIDTH¶
Accepted Values: Integer between 90 and 300
Shell Flags: -w or --width (ex. --width 150)
Environment Variable: KOMETA_WIDTH (ex. KOMETA_WIDTH=150)
Priority -lp/--low-priority KOMETA_LOW_PRIORITY¶
Shell Flags: -lp or --low-priority (ex. --low-priority)
Environment Variable: KOMETA_LOW_PRIORITY (ex. KOMETA_LOW_PRIORITY=true)
Config Secrets --kometa-*** KOMETA_***¶
--kometa-*** and Environment Variables that are in the
format KOMETA_***, where *** is the name you want to call the variable, 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: --kometa-*** (ex. --kometa-mysecret 123456789)
Environment Variable: KOMETA_*** (ex. KOMETA_MYSECRET=123456789)