2024-04-22 14:20:12 +00:00
# Scheduling Parts of Kometa
2023-12-31 16:45:00 +00:00
2024-04-22 14:20:12 +00:00
Kometa allows you to schedule libraries, files, overlays, operations, and more so that runs can be tailored
2023-12-31 16:45:00 +00:00
to suit your needs.
This is particularly handy for users who have a lot of libraries or run a lot of Metadata/Operations on their libraries.
### IMPORTANT:
2024-04-22 14:20:12 +00:00
These schedules do not trigger Kometa to run; they control what Kometa will do if it happens to be running at the scheduled
time. `weekly(sunday)` , for example, does not mean "run Kometa on Sunday to do this thing"; it means "If Kometa is running,
2023-12-31 16:45:00 +00:00
and it's Sunday, do this thing".
2024-08-12 07:42:28 +00:00
If you want to control when Kometa itself runs, like if you want Kometa to only run on Tuesdays and Thursdays, see [this page ](../kometa/guides/scheduling.md ).
2024-05-05 19:29:20 +00:00
2023-12-31 16:45:00 +00:00
The scheduling options are:
| Name | Description | Format | Example |
|:-------------|:--------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------|:---------------------------------------------------------------------|
| Hourly | Update only when the script is run in that hour or hour range | hourly(Hour of Day)< br > hourly(Start Hour-End Hour) | `hourly(17)` < br > `hourly(17-04)` |
| Daily | Update once a day | daily | `daily` |
| Weekly | Update once a week on the specified days (For multiple days, use a bar-separated (< code > | </ code > ) list) | weekly(Days of Week) | `weekly(sunday)` < br >< code > weekly(sunday| tuesday)</ code > |
2024-07-26 07:23:37 +00:00
| Monthly | Update once a month on the specified day (multiple days not supported as a parameter) | monthly(Day of Month) | `monthly(1)` |
| Yearly | Update once a year on the specified day (multiple days not supported as a parameter) | yearly(MM/DD) | `yearly(01/30)` |
2023-12-31 16:45:00 +00:00
| Range | Updates whenever the date is within the range (For multiple ranges, use a bar-separated (< code > | </ code > ) list) | range(MM/DD-MM/DD) | `range(12/01-12/31)` < br >< code > range(8/01-8/15| 9/01-9/15)</ code > |
| Never | Never updates | never | `never` |
| Non Existing | Updates if it doesn't exist | non_existing | `non_existing` |
| All | Requires that all comma separated scheduling options inside its brackets be meet in order to run | all[Options] | `all[weekly(sunday), hourly(17)]` |
* `daily` is the default when `schedule` is not specified.
2024-04-22 14:20:12 +00:00
* You can run Kometa multiple times per day but using the `--time` command line argument detailed on the [Run Commands & Environmental Variables Page ](../kometa/environmental.md ).
2023-12-31 16:45:00 +00:00
* You can have multiple scheduling options as a list.
* You can use the `delete_not_scheduled` setting to delete Collections that are skipped due to not being scheduled.
## Examples
??? blank "Scheduling a Library< a class = "headerlink" href = "#schedule-library" title = "Permanent link" > ¶< / a > "
2024-08-28 18:27:28 +00:00
< div id = "schedule-library" /> Uses the `schedule` [Library Attribute ](libraries.md#attributes ) to set when a library will be run.
2023-12-31 16:45:00 +00:00
Other schedule rules for files, overlays, collections, and any other attribute that can be scheduled must also be
met.
???+ example "Example"
Below is an example of a library which has been scheduled to run every Sunday.
```yaml
libraries:
Movies:
schedule: weekly(sunday)
collection_files:
- file: config/Movies.yml
2024-04-22 14:20:12 +00:00
- default: imdb
- default: studio
- default: genre
- default: actor
2023-12-31 16:45:00 +00:00
operations:
mass_critic_rating_update: tmdb
```
??? blank "Scheduling Collection, Playlist, and Metadata Files< a class = "headerlink" href = "#schedule-files" title = "Permanent link" > ¶< / a > "
2024-08-28 18:27:28 +00:00
< div id = "schedule-files" /> Uses the `schedule` [Block Attribute ](files.md#other-block-attributes ) to set when a file
2023-12-31 16:45:00 +00:00
will be run.
Other schedule rules for collections and any other attribute that can be scheduled must also be met.
???+ example "Example"
Collection Files, Playlist Files, and Metadata Files can all be individually scheduled, as seen below where
different files are scheduled to run on each day of the week:
```yaml
libraries:
Movies:
collection_files:
- file: config/Movies.yml
schedule: weekly(monday)
2024-04-22 14:20:12 +00:00
- default: imdb
2023-12-31 16:45:00 +00:00
schedule: weekly(tuesday)
- folder: config/Movies/
schedule: weekly(wednesday)
2024-04-22 14:20:12 +00:00
- default: genre
2023-12-31 16:45:00 +00:00
schedule: weekly(thursday)
2024-04-22 14:20:12 +00:00
- default: actor
2023-12-31 16:45:00 +00:00
schedule: weekly(friday)
metadata_files:
- file: config/metadata.yml
schedule: weekly(saturday)
playlist_files:
- file: config/Playlists.yml
schedule: weekly(sunday)
```
??? blank "Scheduling Overlays< a class = "headerlink" href = "#schedule-overlays" title = "Permanent link" > ¶< / a > "
< div id = "schedule-overlays" /> Uses the `schedule_overlays` [Library Attribute ](libraries.md#attributes ) to set when
overlays will run for a library.
**Note: Overlay Files cannot be individually Scheduled, all Overlay Files must be scheduled for the same period.**
???+ example "Example"
In the Example below overlays will only be run weekly on Saturday.
```yaml
libraries:
Movies:
schedule_overlays: weekly(saturday)
overlay_files:
2024-04-22 14:20:12 +00:00
- default: audio_codec
- default: resolution
- default: video_format
2023-12-31 16:45:00 +00:00
```
??? blank "Scheduling Individual Collections< a class = "headerlink" href = "#schedule-collection" title = "Permanent link" > ¶< / a > "
< div id = "schedule-collection" /> Uses the `schedule` [Definition Setting ](../files/settings.md ) to set when this
collection will run.
???+ example "Example"
Below is an example of a collection which has been scheduled to run on a Sunday. In this scenario, if you run
2024-04-22 14:20:12 +00:00
Kometa on a Monday, this collection will be skipped but any other collections which do not have a scheduled defined
2023-12-31 16:45:00 +00:00
will be run.
```yaml
collections:
TMDb Trending Weekly:
tmdb_trending_weekly: 30
sync_mode: sync
schedule: weekly(sunday)
TMDb Top Rated:
tmdb_top_rated: 30
sync_mode: sync
schedule:
- monthly(1)
- monthly(15)
```
??? blank "Scheduling Operation Blocks< a class = "headerlink" href = "#schedule-operations" title = "Permanent link" > ¶< / a > "
< div id = "schedule-operations" /> Each [Operation Block ](operations.md#operation-blocks ) can use the `schedule`
[Definition Setting ](../files/settings.md ) to set when that block will run.
???+ example "Example"
This example shows just one Operation Block scheduled weekly on fridays.
```yaml
libraries:
Movies:
collection_files:
2024-04-22 14:20:12 +00:00
- default: imdb
2023-12-31 16:45:00 +00:00
operations:
schedule: weekly(friday)
mass_critic_rating_update: tmdb
split_duplicates: true
```
This example shows 2 Operation Blocks each with a differnet schedule.
```yaml
libraries:
Movies:
collection_files:
2024-04-22 14:20:12 +00:00
- default: imdb
2023-12-31 16:45:00 +00:00
operations:
- schedule: weekly(friday)
mass_critic_rating_update: tmdb
- schedule: weekly(saturday)
split_duplicates: true
```
??? blank "Scheduling Pinning Collections< a class = "headerlink" href = "#schedule-pinning" title = "Permanent link" > ¶< / a > "
< div id = "schedule-pinning" /> Uses the `visible_library` , `visible_home` , or `visible_shared`
[Collection Metadata Update ](../files/updates.md ) to have collections be "pinned" to your home screen while
scheduled.
???+ example "Example"
In this example, the collection will be pinned to your home screen for the month of December and on January 1st
2024-04-22 14:20:12 +00:00
will no longer be pinned (you must run Kometa on 1st January for the removal of the pin to happen)
2023-12-31 16:45:00 +00:00
```yaml
collections:
Christmas Movies:
imdb_list: https://www.imdb.com/list/ls000096828/
sync_mode: sync
visible_home: range(12/01-12/31)
```