5.3 KiB
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:
- Config the schedule
- Schedule script on server
- ...
- Profit!
See Installation & Setup section
Schedule Rules
Schedule priority for a given Date:
-
misc
- always_use - always includes in listing (append)
-
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 -
weekly
Include listing for the specified WEEK of the year for the given Date
**override usage of month/default listings -
monthly
Include listing for the specified MONTH of the year for the given Date
**overrides usage of week/month/default listings -
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
- -v : version information
- -h : help information
- -c : config.ini (local or PlexAPI system central) for Connection Info (see config.ini.sample)
- -s : preroll_schedules.yaml for various scheduling information (see spreroll_schedules.yaml.sample)
- -l : location of custom logger.conf config file
See:- Sample logger config
- Logger usage Examples
- Logging Info
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!