Skip to content

netplexflix/Upcoming-Movies-TV-Shows-for-Kometa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

185 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UMTK_Logo2
GitHub Release Docker Pulls Discord

UMTK (Upcoming Movies & TV Shows for Kometa) manages your Plex media collections and overlays using Kometa (formerly Plex Meta Manager).
It includes:

  • Coming Soon β€” Checks Radarr and Sonarr for upcoming (monitored) content expected to be released/air within x days. Either downloads trailers using yt-dlp or creates placeholder video files. For movies, Plex's 'editions' feature is used (Plex Pass required for Server admin account). For TV Shows, the trailer or placeholder file is saved as a "special" (S00E00).
  • TV Show Status (formerly TSSK) β€” Checks your Sonarr for TV show statuses and creates .yml files for overlays and collections. Categories include: new shows, new seasons, upcoming episodes, upcoming finales, season finales, final episodes, returning, ended, and canceled shows.
  • Trending β€” Uses MDBList to create "Trending" categories and creates placeholder files for missing items with an overlay indicating that a request is required. Optionally applies a TOP 10 ranking overlay.

Note

This version of UMTK implements 2 big changes: TSSK is now integrated and a webUI is available.
If you're an existing UMTK and/or TSSK user and want to migrate to this new version: Don't worry, it is easy:

You only use UMTK:

All you have to do is map port 2120 to be able to visit the webUI. (See example docker-compose, or map it in the unRAID template). Everything will continue to work as usual. TSSK is disabled by default.

You use UMTK and TSSK:

  • For UMTK; map port 2120 to be able to access the webUI.
  • Rename your TSSK config to tssk_config.yml and move it to your UMTK's config folder.
  • Enable TSSK in UMTK's webUI, or by manually enabling the variable in config.yml.
  • Note that TSSK ymls will be output in the same directory as your UMTK ymls. So if they were generated elsewhere before, you'll have to adjust the paths in your Kometa config.
  • You can remove your TSSK container as both scripts will now run in this unified UMTK container

You only use TSSK:

  • Follow the UMTK install instructions
  • Rename your TSSK config to tssk_config.yml and move it to your UMTK's config folder.
  • Enable TSSK in UMTK's webUI, or by manually enabling the variable in config.yml.
  • UMTK is disabled by default
  • Make sure your Kometa config points to the correct yml output directory
  • You can remove your TSSK container as TSSK will now run under the UMTK container

Examples:

TV Show Status Overlays:

Image

Coming Soon Movies:

Image

Coming Soon TV Shows:

Image

TV Shows Trending TOP 10:

Image

In this example 3 trending shows have not been added to Sonarr (and are not available). This example uses the Kabeb template + TV Show Status overlays.


πŸ“‘ Table of Contents


πŸ› οΈ Installation

Option 1: Docker

Step 1: Install Docker

  1. Download Docker Desktop from docker.com
  2. Install and start Docker Desktop on your computer
  3. Verify installation: Open a terminal/command prompt and type docker --version - you should see a version number

Step 2: Create Docker Compose File

  1. Create a new folder for UMTK on your computer (e.g., C:\UMTK or /home/user/UMTK)
  2. Create a new file called docker-compose.yml in that folder
  3. Copy and paste this content into the file:
services:
  umtk:
    image: netplexflix/umtk:latest
    container_name: umtk
    ports:
      - "2120:2120" # Web UI
    environment:
      - CRON=0 2 * * * # Run daily at 2am (used as initial default only)
      # - SCHEDULE_HOURS=24 # Alternative: run every X hours instead of a cron expression
      - DOCKER=true
      - TZ=America/New_York # Set your timezone
      - PUID=1000 # Set to your user ID (run `id -u` in terminal)
      - PGID=1000 # Set to your group ID (run `id -g` in terminal)
    extra_hosts:
      - "host.docker.internal:host-gateway" # Alternative way to access host
    volumes:
      # Configuration directory (required)
      - ./config:/app/config

      # Video directory for placeholder method (optional - only needed if using method 2)
      - ./video:/video

      # Output directory for generated YAML files (required)
      - ./kometa:/app/kometa

      # UMTK root folders
      - /your/actual/path:/umtkmovies #example: /mnt/media/umtk/movies:/umtkmovies
      - /your/actual/path:/umtktv #example: /mnt/media/umtk/tv:/umtktv

    restart: unless-stopped
  1. Update the timezone in the TZ environment variable to match your location (e.g.: America/New_York, Europe/London, Asia/Tokyo)
  2. Update PUID/PGID to match your system user (optional - defaults to 1000:1000)

Step 3: Create Required Directories

  1. Create the required folders in your UMTK directory:

    • config folder (for configuration files)
    • video folder (for placeholder videos)
    • kometa folder (for generated YAML files)
  2. Create your UMTK video file roots:

    • These will be the folders UMTK creates the trailer or placeholder files in. Make sure it's not within your Arr root path.
    • For example if your Arr roots are /mnt/media/movies and /mnt/media/tvthen you can create /mnt/media/umtk/movies and /mnt/media/umtk/tv
    • These are the UMTK roots you have to mount in your docker-compose

Step 4: Configure Your Settings

  • You can skip this if you want to edit your settings in the webUI.
  • Alternatively you can manually edit your settings in the yml files. See βš™οΈ Configuration

Step 5: Update Media Paths

You must update the media paths in the existing docker-compose.yml file.

Important

The format is: your-actual-path:container-path

Example:

  • You created /mnt/media/umtk/movies and /mnt/media/umtk/tv
  • In your config you set umtk_root: /umtkmovies on your Radarr instance and umtk_root: /umtktv on your Sonarr instance (see the per-instance settings under Connections)
  • Then your mounts should look like this:
      - /mnt/media/umtk/movies:/umtkmovies
      - /mnt/media/umtk/tv:/umtktv
  • If you run multiple Radarr/Sonarr instances with different roots (e.g. a 4K instance), add a volume mount for each distinct umtk_root.

Tip

By default UMTK will output the yml files in a subfolder named kometa.
You can make UMTK output the yml files directly into your Kometa/config folder for example by adjusting the volume mount.
This will make them easily accessible for Kometa. e.g.: /path/to/Kometa/config:/kometa

Step 6: Run UMTK

  1. Open a terminal/command prompt in your UMTK folder
  2. Type this command and press Enter:
    docker-compose up -d
  3. That's it! UMTK will now run automatically every day at 2 AM

Step 7: Add the yml files to your Kometa config


Option 2: Manual Installation

Step 1: Clone the repository:

git clone https://github.com/netplexflix/Upcoming-Movies-TV-Shows-for-Kometa.git
cd Upcoming-Movies-TV-Shows-for-Kometa

Tip

If you don't know what that means, simply download the script by pressing the green 'Code' button above and then 'Download Zip'.
Extract the files to your desired folder.

Step 2: Install Python dependencies:

  • Ensure you have Python installed (>=3.11)
  • Open a Terminal in the script's directory

Tip

Windows Users:
Go to the UMTK folder (where UMTK.py is). Right mouse click on an empty space in the folder and click Open in Windows Terminal.

  • Install the required dependencies:
pip install -r requirements.txt

Step 3: Install ffmpeg (for trailer downloads)

ffmpeg is required by yt-dlp for postprocessing when downloading trailers. Check THIS WIKI for installation instructions.

Step 4: Configure Your Config Settings

Step 5: Add the yml files to your Kometa config

Tip

Windows users can create a batch file to quickly launch the script.
Type "[path to your python.exe]" "[path to the script]" -r pause" into a text editor

For example:

"C:\Users\User1\AppData\Local\Programs\Python\Python311\python.exe" "P:\UMTK\UMTK.py" -r
pause

Save as a .bat file. You can now double click this batch file to directly launch the script.
You can also use this batch file to schedule the script to run.


πŸ–₯️ Web UI

UMTK includes a built-in web interface for configuration and monitoring, accessible at http://localhost:2120 (or http://your-ip:2120). Features:

  • Configuration: Edit all UMTK and TSSK settings through the UI. Organized in tabs: Connections (WebUI/Plex/Radarr/Sonarr), UMTK settings, and TSSK settings.
  • Connection Testing: Test your Plex, Radarr, and Sonarr connections directly from the UI with response time feedback.
  • Scheduler Control: View the current status (idle/running/stopped), trigger a "Run Now", pause or resume the schedule, and see next/last run times. The schedule itself can also be edited live from the Connections tab (switch between hours-interval and cron, and save β€” changes take effect without a container restart).
  • Live Logs: Monitor real-time application logs.
  • Update Checker: Check for new UMTK versions.

Tip

All settings can also be edited manually in the YAML config files if you prefer.


βš™οΈ Configuration

Rename config.sample.yml to config.yml and update your settings:

General:

  • enable_umtk: Enable/disable the UMTK module β€” Coming Soon and Trending (default: true)
  • enable_tssk: Enable/disable the TSSK module β€” TV Show Status (default: false). See TSSK Configuration for settings.
  • movies: 0 = Don't process, 1 = Download trailers with yt-dlp, 2 = Use placeholder video file
  • tv: 0 = Don't process, 1 = Download trailers with yt-dlp, 2 = Use placeholder video file
  • method_fallback: When set to true: If trailer downloading fails, UMTK will automatically fallback to using the placeholder method.
  • utc_offset: Set your UTC timezone offset
    • Examples: LA: -8, New York: -5, Amsterdam: +1, Tokyo: +9
  • debug: Set to true to troubleshoot issues
  • cleanup: Set to true (default) to automatically remove trailers/placeholders when actual content is downloaded or no longer valid
  • simplify_next_week_dates: Set to true to simplify dates to today, tomorrow, friday etc if the air date is within the coming week.
  • skip_channels: Blacklist YouTube channels that create fake trailers

Radarr/Sonarr Instances:

You can configure one or more Radarr and Sonarr instances. Each instance needs:

  • name: A unique name for this instance (e.g., "Radarr", "Radarr4K")
  • url: Your Radarr/Sonarr URL (default: http://localhost:7878 / http://localhost:8989)
  • api_key: Found in Settings β†’ General β†’ Security
  • timeout: Increase if needed for large libraries (default: 90)
  • exclude_tags: Comma-separated tag names to exclude from processing

Example with multiple instances:

radarr_instances:
  - name: Radarr
    url: 'http://localhost:7878'
    api_key: 'YOUR_API_KEY'
    timeout: 90
    exclude_tags: exclude, private
  - name: Radarr4K
    url: 'http://localhost:7879'
    api_key: 'YOUR_API_KEY'
    timeout: 90
    exclude_tags: exclude

Note

Existing configs using the old flat format (radarr_url, radarr_api_key, etc.) will continue to work without changes. They are automatically converted to the new instance format at load time.

Instance Output Mode:

  • instance_output_mode: Controls how data from multiple instances is written to YML files:
    • combined (default) β€” Data from all instances is merged into single YML files. Duplicate items (same TVDB/TMDB ID across instances) are deduplicated.
    • split β€” Each instance gets its own set of YML files with the instance name appended (e.g., UMTK_TV_UPCOMING_SHOWS_COLLECTION_Radarr4K.yml).

Plex Configuration (for metadata edits):

  • plex_url: Your Plex URL
  • plex_token: How to find your Plex Token
  • movie_libraries: names of your movie libraries, comma separated
  • tv_libraries: names of your TV show libraries, comma separated
  • plex_library_scan: When set to true, UMTK asks Plex to scan the configured movie/TV libraries at the end of a run for library types where a new placeholder or trailer was written this run. Useful if your Plex isn't set to auto-scan for changes.
  • append_dates_to_sort_titles: Release dates will be added to sort titles so you can sort in order of release date.
  • add_rank_to_sort_title: Will add the rank in front of the sort title so you can sort in order of rank
  • edit_S00E00_episode_title: Will name the S00E00 episodes as either Trailer or Coming Soon depending on whether a trailer was downloaded or placeholder file was used
  • metadata_retry_limit: How many times to retry metadata edits. This gives Plex some time to pick up the newly created items.

Radarr / Sonarr Instance Settings:

Each Radarr and Sonarr instance has its own options configured under the Connections tab in the WebUI (or directly under radarr_instances / sonarr_instances in config.yml):

  • name: A friendly label for the instance (e.g. Radarr, Radarr4K).
  • url: The instance URL.
  • api_key: The instance API key.
  • timeout: Request timeout in seconds (default: 90).
  • exclude_tags: Comma-separated list of Radarr/Sonarr tags whose items should be skipped.
  • umtk_root: Where UMTK will output the folders for this instance. Every instance can point at a different root so separate Arrs (e.g. 4K) write to separate folders.

Note

If you upgrade from an older UMTK release that used the global umtk_root_movies / umtk_root_tv keys, those values are still honored β€” they're automatically inherited by any instance (and the Trending roots below) that doesn't set its own. The WebUI will show a banner reminding you to migrate.

Movie Settings:

  • future_days_upcoming_movies: How many days ahead to look for releases (default: 30)
  • past_days_upcoming_movies: How many days in the past to look for releases (default: 0 means no limit)
  • include_inCinemas: Include cinema release dates (default: false, only digital/physical)
  • future_only: false (default) will include already-released but not-downloaded movies. true only looks at release dates in the future.

TV Show Settings:

  • future_days_upcoming_shows: How many days ahead to look for premieres (default: 30)
  • recent_days_new_show: How many days back to look for new shows (default: 7)
  • future_only_tv: Set to false (default) to include already-aired but not-downloaded show premieres

Important

You need to add your umtk_root folders to your library folders in Plex (or create separate libraries if you prefer).
Example for TV:
Image

Trending:

  • trending_movies: 0 = Don't process, 1 = Download trailers with yt-dlp, 2 = Use placeholder video file
  • trending_tv: 0 = Don't process, 1 = Download trailers with yt-dlp, 2 = Use placeholder video file
  • label_request_needed: will add an additional RequestNeeded label to trending items not yet monitored in the Arrs
  • mdblist_api_key: Can be found at https://mdblist.com/preferences/
  • mdblist_movies: which trending movies list to use. you can create your own.
  • mdblist_movies_limit: How many items to pull from the trending movies list
  • mdblist_tv: which trending TV shows list to use. you can create your own.
  • mdblist_tv_limit: ow many items to pull from the trending TV shows list
  • trending_root_movies: Root folder for trending movies that aren't in any Radarr library (Request Needed items). Docker users: use /umtkmovies.
  • trending_root_tv: Root folder for trending shows that aren't in any Sonarr library (Request Needed items). Docker users: use /umtktv.

Tip

With Pulsarr you and your users can easily request missing content by adding it to watchlist in Plex. No external request platforms needed.

Overlay & Collection Settings:

The remaining settings customize the output .yml files for Kometa.

Tip

You can enter any Kometa variables in this block and they will be automatically added in the generated .yml files.

Note

There are two different overlays:

  • One for movies/shows with a release/air date in the future. This overlay will append the release date.
  • One for movies/shows that have already been released/aired but haven't been downloaded yet. Depending on your setup there could be some time between the official release date and when it's actually added to your Plex server. Since the release date is in the past it isn't printed. Instead you can state it's "coming soon". You can disable this category by setting future_only to true

Note

Date format options:

  • d: 1 digit day (1)
  • dd: 2 digit day (01)
  • ddd: Abbreviated weekday (Mon)
  • dddd: Full weekday (Monday)
  • m: 1 digit month (1)
  • mm: 2 digit month (01)
  • mmm: Abbreviated month (Jan)
  • mmmm: Full month (January)
  • yy: Two digit year (25)
  • yyyy: Full year (2025)

Dividers can be /, - or a space

TSSK Configuration (TV Show Status):

TSSK settings are stored in a separate config file. Rename tssk_config.sample.yml to tssk_config.yml in your config folder (next to config.yml).

Note

Sonarr/Plex credentials and shared settings (utc_offset, debug, simplify_next_week_dates) are automatically read from the main config.yml β€” you do not need to duplicate them.

TSSK General Settings:

  • use_tvdb: Change to true if you prefer TheTVDB statuses for returning and ended. (Note: TheTVDB does not have the 'canceled' status)
  • skip_unmonitored: Default true will skip a show if the upcoming season/episode is unmonitored.
  • ignore_finales_tags: Shows with these Sonarr tags will be ignored when checking for finales.

TSSK Sort Title Edits:

TSSK can edit sort titles directly in Plex, prepending the relevant air date so you can sort shows by date. The master toggle enables the feature; the sub-options pick which categories receive edits.

  • edit_sort_titles: Master toggle. Set to true to let TSSK edit Plex sort titles. Requires plex_url, plex_token, and tv_libraries to be configured.
  • edit_sort_titles_new_season_soon: Default true. Edit sort titles for shows in the New Season Soon category.
  • edit_sort_titles_upcoming_episode: Default false. Edit sort titles for shows in the Upcoming Episode category.
  • edit_sort_titles_upcoming_finale: Default false. Edit sort titles for shows in the Upcoming Finale category.

Note

For some shows, episodes are listed one at a time β€” usually one week ahead β€” in TheTVDB/Sonarr. Because of this, TSSK may wrongly think the last episode listed in the season is a finale. You can give problematic shows like this a tag in Sonarr (and add that tag to ignore_finales_tags) so TSSK will ignore finales for that show and treat the current 'last' episode as a regular episode.

TSSK Categories:

Each category can be individually enabled or disabled. Set to false to disable:

  • process_new_shows: New shows that were added in the past x days
  • process_new_season_soon: Shows for which a new season is airing within x days
  • process_new_season_started: Shows for which a new season has been added which aired in the past x days
  • process_upcoming_episode: Shows with upcoming regular episodes within x days
  • process_upcoming_finale: Shows with upcoming season finales within x days
  • process_season_finale: Shows for which a season finale was added which aired in the past x days
  • process_final_episode: Shows for which a final episode was added which aired in the past x days
  • process_returning_shows: Returning shows
  • process_ended_shows: Ended shows
  • process_canceled_shows: Canceled shows

TSSK Timeframe Settings:

For each category, you can change the relevant timeframe:

  • recent_days_new_show: How many days in the past to look for new shows (default: 7)
  • future_days_new_season: How many days into the future to look for new seasons (default: 31)
  • recent_days_new_season_started: How many days in the past to look for started seasons (default: 7)
  • future_days_upcoming_episode: How many days into the future for upcoming episodes (default: 31)
  • future_days_upcoming_finale: How many days into the future for upcoming finales (default: 31)
  • recent_days_season_finale: How many days in the past for aired season finales (default: 7)
  • recent_days_final_episode: How many days in the past for aired final episodes (default: 7)

TSSK Collection & Overlay Settings:

Each category has its own collection and overlay blocks, following the same pattern as the UMTK overlay settings.

  • Collection blocks: Customize collection_name, item_label, build_collection, sync_mode, etc. You can enter any Kometa collection variables.
  • Backdrop blocks: Enable/disable the backdrop, set colors, size, and positioning. Supports both back_color (solid color) and url (image) backdrops.
  • Text blocks: Customize use_text, date_format, capitalize_dates, font color, size, and positioning.

Tip

For New Season Soon, New Season Started, Upcoming Finale and Season Finale you can use [#] in the use_text field to display the season number. For example: "SEASON [#] AIRS"

Tip

group and weight are used to determine which overlays are applied when multiple are valid for the same show. For example: You add a new show, for which season 2 just aired in full yesterday. In this case the following overlays would be valid: new show, new season started and season finale. The overlay with the highest weight will be applied. If you prefer a different priority, adjust the weights accordingly. You can also have multiple overlays applied at the same time by removing group and weight, in case you position them differently.

Note

The date format options are the same as listed above in the Overlay & Collection Settings section.


πŸ—‚οΈ Create your Coming Soon Collection

In the config example, we use build_collection: false.
This will tell Kometa to only apply labels to the content without actually creating the collection directly.
That way we can manually create a smart filter which includes both Coming Soon items and New Season Soon items from TSSK:
Image
It also makes the collection more flexible allowing filters to be easily added and removed.

You can replace build_collection: false with your own Kometa collection variables to have Kometa create the collection directly.


β˜„οΈ Add to Kometa Configuration

Open your Kometa config.yml (typically at Kometa/config/config.yml) and add the path to the generated .yml files under collection_files and overlay_files.

Example:

TV Shows:
  collection_files:
    # UMTK
    - file: /path/to/UMTK/kometa/UMTK_TV_UPCOMING_SHOWS_COLLECTION.yml
    - file: /path/to/UMTK/kometa/UMTK_TV_TRENDING_COLLECTION.yml
    # TSSK
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SHOW_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SEASON_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SEASON_STARTED_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_UPCOMING_EPISODE_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_UPCOMING_FINALE_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_SEASON_FINALE_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_FINAL_EPISODE_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_RETURNING_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_ENDED_COLLECTION.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_CANCELED_COLLECTION.yml
  overlay_files:
    # UMTK
    - file: /path/to/UMTK/kometa/UMTK_TV_UPCOMING_SHOWS_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/UMTK_TV_TOP10_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/UMTK_TV_NEW_SHOWS_OVERLAYS.yml
    # TSSK
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SHOW_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SEASON_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_NEW_SEASON_STARTED_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_UPCOMING_EPISODE_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_UPCOMING_FINALE_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_SEASON_FINALE_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_FINAL_EPISODE_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_RETURNING_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_ENDED_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/TSSK_TV_CANCELED_OVERLAYS.yml

Movies:
  collection_files:
    - file: /path/to/UMTK/kometa/UMTK_MOVIES_UPCOMING_COLLECTION.yml
    - file: /path/to/UMTK/kometa/UMTK_MOVIES_TRENDING_COLLECTION.yml
  overlay_files:
    - file: /path/to/UMTK/kometa/UMTK_MOVIES_UPCOMING_OVERLAYS.yml
    - file: /path/to/UMTK/kometa/UMTK_MOVIES_TOP10_OVERLAYS.yml

Tip

Only add the files for the categories you have enabled. All are optional and independently generated based on your config settings.


πŸͺ Using browser cookies for yt-dlp (Method 1)

In case you need to use your browser's cookies with method 1, you can pass them along to yt-dlp.
To extract your cookies in Netscape format, you can use an extension:

  • Firefox
  • Chrome
    Extract the cookies you need and rename the file cookies.txt

For Docker Users:

Add the path to the folder containing your cookies.txt to your docker-compose.yml under volumes::

      - /path/to/cookies:/cookies

For Local Installation

  1. Create a cookies folder in the same directory as the UMTK script
  2. Export your browser cookies to cookies.txt within this new subfolder

πŸ“Ό Choose Placeholder Video (Method 2)

When using the placeholder method, the script uses the UMTK video file in the video subfolder.
It's a simple intro video that shows 'coming soon':
Image

You can replace this with one of the other included examples, or with any video you like. Just make sure your chosen video is named UMTK.


πŸš€ Usage

Docker:

The container runs automatically based on your CRON schedule. To run manually:

docker exec umtk python /app/UMTK.py

Manual:

Open a Terminal in your script directory and run:

python UMTK.py

Tip

You can also trigger a run from the Web UI using the "Run Now" button.

When both modules are enabled, UMTK runs first, followed by TSSK.


🌐 Localization

You can translate weekdays and months by using a localization file.

  • Download your language from this repo (config/localization files)
  • Rename it to localization.yml and place it in your config folder (next to config.yml).

If your language is missing, simply use one of the templates and edit as needed.


πŸ’‘ Tips & Best Practices

Exclude UMTK Content from Recently Added Sections

Since UMTK adds content before it's actually available, you'll want to exclude it from "Recently Added" sections:

Example for TV Shows:

  1. Go to your TV show library
  2. Sort by "Last Episode Date Added"
  3. Click '+' β†’ "Create Smart Collection"
  4. Add filter: Folder Location is not your UMTK TV root folder(s) (i.e. the umtk_root path(s) you configured on your Sonarr instance(s), plus trending_root_tv if used)
  5. Press 'Save As' > 'Save As Smart Collection'
  6. Name it something like "New in TV ShowsπŸ“Ί"
  7. In the new collection click the three dots then "Visible on" > "Home"
  8. Go to Settings > under 'manage' click 'Libraries' > Click on "Manage Recommendations" next to your TV library
  9. Unpin the default "Recently Added TV" and "Recently Released Episodes" from home, and move your newly made smart collection to the top (or wherever you want it)

Choosing Between Methods

Trailer Method (1):

  • βœ… Provides actual trailers for upcoming content
  • ❌ May fail if no suitable trailer is found or yt-dlp is currently blocked by YouTube

Placeholder Method (2):

  • βœ… Always works (no external dependencies)
  • βœ… Faster processing
  • ❌ Some content may not have a Plex Pass Trailer

Understanding Movie Release Types

When include_inCinemas is enabled, UMTK considers three release types:

  • Digital Release: Streaming/VOD availability
  • Physical Release: Blu-ray/DVD release
  • Cinema Release: Theatrical release

UMTK uses the earliest available date when multiple types exist. Keep include_inCinemas set to false to ignore cinema/theater release dates.

Scheduling (Docker)

UMTK supports two schedule modes β€” every X hours or a cron expression β€” and both can be edited live from the Web UI's Connections tab without restarting the container.

On first launch, UMTK seeds the schedule from the CRON / SCHEDULE_HOURS environment variables in your docker-compose.yml. The resolved values are then persisted into config/config.yml under schedule_type, schedule_hours, and schedule_cron. From that point on, the Web UI is the source of truth β€” env vars are ignored unless you wipe the scheduler keys from config.yml.

The default cron is 0 2 * * * (2 AM daily). Common alternatives:

  • 0 */6 * * * - Every 6 hours
  • 0 0 * * 0 - Weekly on Sunday at midnight
  • 0 4 * * 1,4 - Monday and Thursday at 4 AM

Use crontab.guru to create custom schedules, or switch to "Every X hours" mode in the Web UI if you prefer interval scheduling.

Prevent Request Platforms from marking coming soon items as available

Request platforms such as Ombi and Overseerr check Plex for availability instead of Radarr/Sonarr. Therefor they will mark 'coming soon' items as available even though Radarr and Sonarr will correctly see them as 'missing'
To avoid this you can choose to create seperate libraries for your 'coming soon' items.

  • In Plex, create new Coming Soon Libraries pointed to the umtk_root folder.
  • Add these new libraries to your Kometa config and add the collection and overlay .yml files there.
  • In Ombi/Overseerr/... unmonitor these libraries
Image

NOTE: You'll have to instruct your users to 'pin' these new libraries. Otherwise they will not see the 'Coming Soon' collections appear on their home screen.


🩺 Troubleshooting Common Issues:

❌ "Connection refused" to Sonarr/Radarr:

  • First: Make sure Sonarr and Radarr are actually running on your computer.
  • Check that the URLs in config.yml are correct (e.g., http://localhost:8989 for Sonarr).
  • If using docker, use ipaddress:8989 or host.docker.internal:8989.
  • If using IP addresses (e.g., 192.168.1.100), make sure they're correct and accessible.

❌ "Permission denied" errors:

  • Check your Docker path mounts in your container or docker-compose.
  • Check whether the PGID:PUID you set in docker-compose has the correct permissions .

❌ "No config.yml found":

  • Make sure you renamed config.sample.yml to config.yml
  • Check that the config folder is properly mounted

❌ yt-dlp fails to download Trailers:

  • There is a constant 'battle' between YouTube and projects like yt-dlp which sporadically 'breaks' the functionality of yt-dlp. An update of yt-dlp may be required. If you manually run the script, you can try updating yt-dlp. Report the issue so the requirements can be updated in the Docker image if needed.
  • Make sure you set method_fallback: true in config to fallback to the Placeholder video method when trailer downloads fail.

❌ A bunch of old movies/shows are being added as Coming Soon

  • That means you have those items monitored in Radarr/Sonarr but not downloaded.
  • You need to either trigger them to download if you want them, or unmonitor them if you don't. Basically your Arrs needed a cleanup.
  • Alternatively, set future_only and/or future_only_tv to true if you don't want any items that have been released to show up as Coming Soon.

❌ Plex Error: label: RequestNeeded not found / Plex Error: label: Coming Soon not found

  • This happens when using the TSSK new show overlay file at a time where one of these labels are not present in your Plex library. Kometa needs these labels to 'exist' somewhere in your library or it will throw this error
  • To solve this: edit any of your collections in Plex, and add the labels Coming Soon and RequestNeeded to it. This way the labels "exist" and it will not impact anything else.

⚠️ Need Help or Have Feedback?


❀️ Support the Project

If you like this project, please ⭐ star the repository and share it with the community!


"Buy Me A Coffee"

About

Create 'Coming Soon' collection and overlay .yml files to be used by Kometa for content being downloaded within x days by Radarr/Sonarr

Resources

Stars

Watchers

Forks

Packages