Go to file
2021-01-01 14:19:37 -05:00
log logic reorganization 2021-01-01 13:31:15 -05:00
.gitignore logging 2021-01-01 10:55:58 -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
README.md late night typos 2021-01-01 14:04:57 -05:00
requirements.txt moving code over 2021-01-01 11:12:22 -05:00
sample_config.ini initial sample files 2021-01-01 11:21:33 -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 rotations
  • Breaking up the monotony
  • Keeping your family/friends on their toes!

Set it and forget it!


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 supports:

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

(See: plexapi.CONFIG for more info)

Feel free to rename sample_config.ini -> 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

Feel free to rename sample_preroll_schedules.yaml -> 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: jan: /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/file(s)
    - start_date: 2020-07-04
      end_date: 2020-07-04
      path: /path/to/file(s)
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