Last active
March 2, 2022 12:32
-
-
Save khaosx/ebd588a80c12dea11512e6ca9873effa to your computer and use it in GitHub Desktop.
Creates a playlist in Plex with the first unwatched episode of your current shows.
This file contains 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
# This script creates a playlist that contains the next unwatched episode of any | |
# shows you define in a collection. | |
# | |
# Requires python 3 | |
# | |
# Usage: | |
# | |
# In Plex, create a collection named "Current Shows". It should contain all the shows | |
# that you want considered for the new playlist. | |
# | |
# Update the variables to match your environment. Search Google for details on how to find | |
# your X-Plex-Token value. | |
# | |
# Then you can run this to create or recreate your playlist: | |
# python current_shows_playlist.py | |
# Update these: | |
PLEX_URL = 'http://my.plex.server:32400' | |
PLEX_TOKEN = 'my_plex_token' | |
# Leave all this alone! | |
import os, operator, time, sys, datetime, re | |
import requests | |
from plexapi.server import PlexServer | |
baseurl = PLEX_URL | |
token = PLEX_TOKEN | |
plex = PlexServer(baseurl, token) | |
MY_PLAYLIST = 'Current Shows' | |
for playlist in plex.playlists(): | |
if playlist.title == MY_PLAYLIST: | |
print('{} already exists. Deleting and rebuilding.'.format(MY_PLAYLIST)) | |
playlist.delete() | |
tv_shows_section = plex.library.section('TV') | |
episode_list = [] | |
for collection in tv_shows_section.collection(): | |
regexp = re.compile(r'Current Shows') | |
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 {} shows to playlist.'.format(len(episode_list))) | |
plex.createPlaylist(MY_PLAYLIST, episode_list) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you for replying!
Ok, this is what i have tried (please note, this is maybe my second ever time seeing python, so I am very noob here lol)
After changing token and url, I got the error for TV, that one i sorted out, changed line 37 from TV to TV Shows
But running it then, i get the following error
My Collection is also named Current Shows
I have manually created a playlist called current shows, and the script does then see it and delete it, so everything works up to there.
I have, in trying to test, and also trying to see how python and plex API works, played with this a bit.
I have uncommented everything and removed comments systematically, whilst doing print() after each statement.
when i print
tv_shows_section
I get the correct sectionwhen i only run this
for collection in tv_shows_section.collection():
i still get the title error, but if i add Current Shows infor collection in tv_shows_section.collection('Current Shows):
and do a print of collection it shows the 3 test shows i added to the collectionwhen i then add
regexp = re.compile(r'Current Shows')
and do a print of regexp, the output isCurrent Shows
(the word Current Shows), I am not sure if thats correct.And thats where it was 1 am and i decided to go to bed lol
If you can maybe just glance over this and see if you can see where i made a mistake, i would appreciate it.
@khaosx
I played around a bit, and took some (lies! a lot!) inspiration from your script, and tried making my own! seems to be working
https://github.com/desatur8/PlexScripts