-
-
Save cfurrow/13a062359bd83ac17a38f8c4fcd3bab2 to your computer and use it in GitHub Desktop.
Create a "Saturday Morning Cartoons" Plex playlist
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PLEX_URL="http://192.168.1.5:32400" | |
PLEX_TOKEN=abc123 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Create a "Saturday Morning Cartoons" playlist from your Plex TV Show collections | |
named "80s Cartoons" and "90s Cartoons". | |
Update the values in .env to match your server. Google details on how to find | |
your X-Plex-Token value and put that in the .env file for PLEX_TOKEN | |
Then you can run this to create or recreate your playlist: | |
python cartoon_playlist.py | |
""" | |
import os, operator, time, sys, datetime, re | |
import requests | |
from dotenv import load_dotenv | |
from plexapi.server import PlexServer | |
load_dotenv(verbose=True) | |
baseurl = os.environ['PLEX_URL'] | |
token = os.environ['PLEX_TOKEN'] | |
plex = PlexServer(baseurl, token) | |
CARTOON_PLAYLIST_TITLE = 'Saturday Morning Cartoons' | |
for playlist in plex.playlists(): | |
if playlist.title == CARTOON_PLAYLIST_TITLE: | |
r = requests.delete('{}/playlists/{}?X-Plex-Token={}'.format(baseurl, CARTOON_PLAYLIST_TITLE, token)) | |
print('{} already exists. Deleting it and will rebuild.'.format(CARTOON_PLAYLIST_TITLE)) | |
tv_shows_section = plex.library.section('TV Shows') | |
episode_list = [] | |
for collection in tv_shows_section.collection(): | |
regexp = re.compile(r'(80s|90s) Cartoons') | |
if not regexp.search(collection.title): | |
break | |
print(collection) | |
for tv_show in collection.children: | |
print(tv_show) | |
for episode in tv_show.episodes(): | |
if not episode.isWatched: | |
print(episode.title) | |
episode_list += episode | |
break | |
print('Adding {} cartoons to playlist.'.format(len(episode_list))) | |
plex.createPlaylist(CARTOON_PLAYLIST_TITLE, episode_list) |
I've not used this script in a few years, but, it seems like it did not find anything to add.
Adding 0 cartoons to playlist.
Verify you have a Collection in your Plex library called "80s Cartoons" or "90s Cartoons". Otherwise the script won't know where to find cartoons to add toy our playlist.
It also seems like the underlying PlexAPI library has changed its syntax. Notice this error:
plexapi.exceptions.BadRequest: Must include items to add when creating new playlist.
Try changing this line:
plex.createPlaylist(CARTOON_PLAYLIST_TITLE, episode_list)
to this:
plex.createPlaylist(CARTOON_PLAYLIST_TITLE, items=episode_list)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Got most of the script working, until the end...then I get the following error
Adding 0 cartoons to playlist.
Traceback (most recent call last):
File "E:\satmorncartoons\cartoon_playlist.py", line 50, in
plex.createPlaylist(CARTOON_PLAYLIST_TITLE, episode_list)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\plexapi\server.py", line 539, in createPlaylist
return Playlist.create(
File "C:\Program Files (x86)\Python39-32\lib\site-packages\plexapi\playlist.py", line 430, in create
return cls._create(server, title, items)
File "C:\Program Files (x86)\Python39-32\lib\site-packages\plexapi\playlist.py", line 336, in _create
raise BadRequest('Must include items to add when creating new playlist.')
plexapi.exceptions.BadRequest: Must include items to add when creating new playlist.