Created
February 26, 2017 22:25
-
-
Save blacktwin/397f07724abebd1223ba6ea644ea1669 to your computer and use it in GitHub Desktop.
Create a Plex Playlist with what was aired on this today's month-day, sort by oldest first, using PlexAPI
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 Plex Playlist with what was aired on this today's month-day, sort by oldest first. | |
If Playlist from yesterday exists delete and create today's. | |
If today's Playlist exists exit. | |
""" | |
import operator, time | |
from plexapi.server import PlexServer | |
import requests | |
baseurl = 'http://localhost:32400' | |
token = 'xxxxxx' | |
plex = PlexServer(baseurl, token) | |
library_name = ['Movies', 'TV Shows'] # You library names | |
child_lst = [] | |
aired_lst = [] | |
today = time.gmtime(time.time()) | |
TODAY_PLAY_TITLE = 'Aired Today {}-{}'.format(today.tm_mon, today.tm_mday) | |
# Remove old Aired Today Playlists | |
for playlist in plex.playlists(): | |
if playlist.title == TODAY_PLAY_TITLE.startswith('Aired Today') and not TODAY_PLAY_TITLE: | |
r = requests.delete('{}/playlists/{}?X-Plex-Token={}' | |
.format(baseurl, TODAY_PLAY_TITLE, token)) | |
print('Removing old Aired Today Playlists ') | |
print(r) | |
elif playlist.title == TODAY_PLAY_TITLE: | |
print('{} already exists. No need to make again.'.format(TODAY_PLAY_TITLE)) | |
exit(0) | |
# Get all movies or episodes from LIBRARY_NAME | |
for library in library_name: | |
for child in plex.library.section(library).all(): | |
if child.type == 'movie': | |
child_lst += [child] | |
elif child.type == 'show': | |
child_lst += child.episodes() | |
else: | |
pass | |
# Find what aired with today's month-day | |
for video in child_lst: | |
try: | |
if str(video.originallyAvailableAt.month) == str(today.tm_mon) \ | |
and str(video.originallyAvailableAt.day) == str(today.tm_mday): | |
aired_lst += [[video] + [str(video.originallyAvailableAt)]] | |
except Exception as e: | |
pass | |
# Sort by original air date, oldest first | |
aired_lst = sorted(aired_lst, key=operator.itemgetter(1)) | |
# Remove date used for sorting | |
play_lst = [x[0] for x in aired_lst] | |
# Create Playlist | |
plex.createPlaylist(TODAY_PLAY_TITLE, play_lst) |
@leftovernick You may have better luck using this: https://github.com/cfurrow/plex-playlist-creators
I created a couple of Plex playlist creator scripts, and tested it out again today, and it worked fine.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello, trying to implement this, but running into an issue where it says there must be items when creating a playlist. I set a print statement for the lists to make sure they have content and this is what is returned: