Have you ever wanted to randomize your Plex movie pre-rolls? How about schedule Thanksgiving prerolls in November, but Christmas prerolls in December? What about change prerolls every single day?

With this awesome Plex-Automated-Preroll script, you can!

The only things you need to get started are:

  • Plex server
  • Python 3.7
  • PlexAPI
  • A few required Python packages

For this guide, I have my Plex server configured on Windows Server 2019, but the steps in this guide will work for Windows 10 users as well. This guide will walk you through how to set this up step-by-step, so don’t worry if you don’t have any Python experience.

UPDATE: New version with GUI has been created! Tutorial here: https://staging.smarthomepursuits.com/how-to-setup-plex-automatic-pre-roll-gui-in-windows/


Step 1: Download (or upgrade) Python

Before you begin, you’ll need to make sure you have at least Python 3.7 installed. Note: if you are using Tautulli (as of December 2020), you are probably on 2.7.1. and will need to latest version of Python.

If you aren’t sure which version of Python you have, open Command Prompt (type CMD into Start) and type python.

If you’re on an older version, download Python 3.8 from here: https://www.python.org/downloads/release/python-380/

Click the Windows x86-x64 executable installer.

Once downloaded, double-click the .exe to install it. Make sure to select both checkboxes below:


Step 2: Download Plex Automated Preroll Script

Download the Github script from here: https://github.com/TheHumanRobot/Plex-Automatic-Preroll/tree/develop

Next, click the green “Code” button > Download zip.

Extract the files to a temporary folder (Downloads is fine).


Step 3: Install Required Packages

One of the extracted files is REQUIREMENTS.txt. That is the file that shows all the required packages you need to install. To install them, open CMD and change the directory to the Python directory. The default directory is:

C:\Users\USERNAME\AppData\Local\Programs\Python\Python38\Scripts

Change to that directory by opening Command Prompt and typing:

cd C:\Users\USERNAME\AppData\Local\Programs\Python\Python38\Scripts

Install each package with the pip command.

  • pip install MarkupSafe==1.1.1
  • pip install PlexAPI==4.2.0
  • pip install python-dateutil==2.8.1
  • pip install PyYAML==5.3.1
  • pip install bs4
  • pip install lxml
  • pip install requests>=2.4.2
  • pip install ruamel.yaml
  • pip inistall urllib3==1.26.2

Step 4: Copy the Plex_Trailers.py and config.yml file to Python Directory

In the extracted folder, copy & paste the Plex_Trailers.py and config.yml files to the Python directory:


Step 5: Create Monthly Preroll Folders

If you don’t have monthly paths setup yet, I recommend creating them like mine.

  • C:\Prerolls\January
  • C:\Prerolls\February
  • C:\Prerolls\March
  • …etc

For this example, I just dropped 1 preroll .mp4 file into the November folder and 1 into the December folder.


Step 6: Edit Config.yml file

If you want to just use Monthly trailers, simply edit the config file you just copied over. Right-click Config > Edit.

Change the URL, Token, and Monthly paths like my screenshot below:

To find your Plex token, open the Plex UI. Find a Movie> Get Info > View XML. In the URL, scroll to the far right and copy the Plex-Token= XYZ field

Next, edit the URL, add your token, and edit the paths to your preroll videos. Save the config file once complete.


Step 7: Run Plex_Trailers.py

From the Scripts directory, run the Plex_Trailers.py file. If you need to the path again, it is: C:\Users\USERNAME\AppData\Local\Programs\Python\Python38\Scripts


Step 8: Test Your Setup

Start a movie from the Plex app on you phone. (I wasn’t able to get prerolls to load from Plex browser UI)

If all goes well, it should play the preroll in the corresponding directory. Since it’s December, it should play the HDR1.mp4 preroll located in C:\Prerolls\December\.

Now, let’s change your Date and Time on Windows back to November to see if it’ll work on a different month. Open Control Panel > Clock and Region. Set the Date and Time > Change date and time. Pick a day in November.

Click OK to save. Then, re-run the Plex_Trailers.py file.

Launch the movie again. This time, it should play my fire.mp4 file located in C:\Prerolls\November folder.


Step 10: Create Scheduled Task to Update Monthly

If you’ve made it this far, awesome! Everything is setup and running as expected. The next step to run the Plex_Trailers.py script monthly using a scheduled task.

Open Task Scheduler. Right-click Task Scheduler Library > Create Basic Task. Create your task like mine below:

In the Program/script box, enter this path (change the USERNAME of course): C:\Users\USERNAME\AppData\Local\Programs\Python\Python38\Scripts\Plex_Trailers.py

Then click Finish.

Wrapping Up

That’s it! You can now play Plex pre-rolls randomly each month without needing to go into Plex and editing the path. On the first day of each month, the Schedule Task will run, changing the directory the prerolls will be running from.

If you’d like to randomly play prerolls from the same Monthly folder, simply add a semicolon between the paths in the config like this and run the Plex_Trailers.py again for the change to take effect.

Similar Posts

7 Comments

  1. Saman Sadeghi says:

    Hi there! Thanks for the great tutorial! What settings need to be made or changed within Plex? In Plex, there is a field for prerolls (settings/extras/prerolls) – should that be left blank?

    1. You’re welcome! No need to change anything within Plex if you’re using this script to automatically change Plex prerolls.

  2. So, first off, THANK YOU for making such a simple to follow guide! Secondly, I want to know, can we mix commas and semicolons? like, can we have a pre roll for silence and one for Social distancing ALWAYS PLAY, and a random Feature Presentation chosen?

    1. I’m also searching for an answer to this question. Would be great if this was possible.

      1. I know you can in plex itself, so it would make sense you would be able to on here/

  3. Thank you for the great instructions. Just wondering if you would be able to make this for a docker. I have just moved everything over to my Unraid server and looking for a way to automate this with in the docker container for Plex.

    1. Hi Don,

      I use Docker for a lot of things just not Plex since I use my GPU for hardware transcoding, so I probably won’t be a creating a guide on how to do that. Good luck though, I’m sure there’s a way to do it if you Google a little more!

Leave a Reply

Your email address will not be published. Required fields are marked *