Go to file
2021-01-01 23:43:22 -05:00
log logic reorganization 2021-01-01 13:31:15 -05:00
.gitignore logging 2021-01-01 10:55:58 -05:00
config.ini.sample rename of sample files 2021-01-01 23:43:22 -05:00
logging.conf moving code over 2021-01-01 11:12:22 -05:00
plexutil.py logic reorganization 2021-01-01 13:31:15 -05:00
preroll_schedules.yaml.sample rename of sample files 2021-01-01 23:43:22 -05:00
README.md rename of sample files 2021-01-01 23:43:22 -05:00
requirements.txt moving code over 2021-01-01 11:12:22 -05:00
schedule_preroll.py Updated README.md and comments 2021-01-01 13:51:22 -05:00

Schedule Plex server related Pre-roll intro videos

A helper script to automate management of Plex pre-rolls.
Define when you want different pre-rolls to play throughout the year.

Ideas include:

  • Holiday pre-roll rotations
  • Special occasions
  • Summer/Winter/Seasonal rotations
  • Breaking up the monotony
  • Keeping your family on their toes!

Simple steps:

  1. Config the schedule
  2. Schedule script on server
  3. ...
  4. Profit!

See Installation & Setup section


Schedule Rules

Schedule priority for a given Date:

  1. misc

    • always_use - always includes in listing (append)
  2. date_range
    Include listing for the specified Start/End date range that include the given Date
    Multipe ranges may apply at same time (append)
    **overrides usage of week/month/default listings

  3. weekly
    Include listing for the specified WEEK of the year for the given Date
    **override usage of month/default listings

  4. monthly
    Include listing for the specified MONTH of the year for the given Date
    **overrides usage of week/month/default listings

  5. default
    Default listing used of none of above apply to the given Date


Installation & Setup

Grab a copy of the code

cd /path/to/your/location
git clone https://github.com/BrianLindner/plex-schedule-prerolls.git

Install Requirements

See requirements.txt for Python modules link

Install Python requirements

pip install -r requirements.txt

Create config.ini file with Plex connection information

Script checks for:

  • local ./config.ini (See: Sample)
  • PlexAPI global config.ini
  • Custom location config.ini (see Arguments)

(See: plexapi.CONFIG for more info)

Rename config.ini.sample -> config.ini and update to your environment

Example config.ini

[auth]
server_baseurl = http://127.0.0.1:32400 # your plex server url
server_token = <PLEX_TOKEN> # access token

Create preroll_schedules.yaml file with desired schedule

Rename preroll_schedules.yaml.sample -> preroll_schedules.yaml and update for your environment

Example YAML config layout (See: Sample for more info)

---
monthly:
  enabled: (yes/no)
  jan: /path/to/file.mp4;/path/to/file.mp4
  ...
  dec: /path/to/file.mp4;/path/to/file.mp4
date_range:
  enabled: (yes/no)
  ranges:
    - start_date: 2020-01-01
      end_date: 2020-01-01
      path: /path/to/video.mp4
    - start_date: 2020-07-03
      end_date: 2020-07-05
      path: /path/to/video.mp4
    - start_date: 2020-12-19
      end_date: 2020-12-26
      path: /path/to/video.mp4
weekly:
  enabled: (yes/no)
  1: /path/to/file(s)
  ...
  52: /path/to/file(s)
misc:
  enabled: (yes/no)
  always_use: /path/to/file(s)
default:
  enabled: (yes/no)
  path: /path/to/file.mp4;/path/to/file.mp4

(Optional) Config logger.conf to your needs

See: https://docs.python.org/3/howto/logging.html


Usage

Default Usage

python schedule_preroll.py

Runtime Arguments

python schedule_preroll.py -h

usage: schedule_preroll.py [-h] [-v] [-l LOG_CONFIG_FILE] [-c CONFIG_FILE] [-s SCHEDULE_FILE]

Automate scheduling of pre-roll intros for Plex

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show the version number and exit
  -l LOG_CONFIG_FILE, --logconfig-path LOG_CONFIG_FILE
                        Path to logging config file. [Default: ./logging.conf]
  -c CONFIG_FILE, --config-path CONFIG_FILE
                        Path to Config.ini to use for Plex Server info. [Default: ./config.ini]
  -s SCHEDULE_FILE, --schedule-path SCHEDULE_FILE
                        Path to pre-roll schedule file (YAML) to be use. [Default: ./preroll_schedules.yaml]

Runtime Arguments Example

python schedule_preroll.py \
    -c path/to/custom/config.ini \
    -s path/to/custom/preroll_schedules.yaml \
    -l path/to/custom/logger.conf

Scheduling (Optional)

Add to system scheduler:

Linux:

crontab -e

Place desired schedule (example below for everyday at midnight)

0 0 * * * python /path/to/schedule_preroll.py >/dev/null 2>&1

or
(Optional) Wrap in a shell script:
useful if running other scripts/commands, using venv encapsulation, customizing arguments

0 0 * * * /path/to/schedule_preroll.sh >/dev/null 2>&1

Wrapping Up

Sit back and enjoy the Intros!


Shout out to places to get Pre-Roll

https://prerolls.video