log | ||
.gitignore | ||
logging.conf | ||
plexutil.py | ||
README.md | ||
requirements.txt | ||
sample_config.ini | ||
schedule_preroll.py |
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
- -v : version information
- -h : help information
- -c : config.ini (local or PlexAPI system central) for Connection Info (see sample_config.ini)
- -s : preroll_schedules.yaml for various scheduling information (see sample_preroll_schedules.yaml)
- -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!