from plexapi.server import PlexServer import requests import os # Replace with your Plex server's URL and API token PLEX_SERVER_URL = "https://plex.membo.co.uk" # Replace with your Plex server URL PLEX_API_TOKEN = "isxueinfDVgHjynYFExy" # Replace with your Plex token LIBRARY_NAME = "Youtube" # Get a list of all playlists TUBEARCHIVIST_URL = "https://tube-archivist.membo.co.uk" TUBEARCHISIT_API = "1f99470b6f9378dcf45af60ad4d228e49200eeff" playlists = [] ###### # Finds playlists that the particular youtube video is in # ytid: the youtube video youtube_id ###### def findPlaylists(ytid): videoIn = [] for video in playlists: if video["yt_id"] == ytid: videoIn.append(video["playlist_name"]) return videoIn ######## # Parses the Plex File for the ytid ########### def plexVideoID(filePath): return os.path.splitext(os.path.basename(filePath))[0] ########### # Creates the list of Tube Archivist playlists and videos ########### def populatePlaylists(): headers = {"Authorization": "Token " + TUBEARCHISIT_API} response = requests.get( TUBEARCHIVIST_URL + "/api/playlist/", headers=headers ).json() for item in response["data"]: entries = item["playlist_entries"] for entry in entries: playlists.append( {"playlist_name": item["playlist_name"], "yt_id": entry["youtube_id"]} ) populatePlaylists() # Connect to Plex server plex = PlexServer(PLEX_SERVER_URL, PLEX_API_TOKEN) # Get the library library = plex.library.section(LIBRARY_NAME) # Fetch all videos in the library all_shows = library.all() # Iterate through the videos and print their file names for show in all_shows: episodes = show.episodes() for episode in episodes: print("-" * 40) print(f'Episode Title: "{episode.title}"') print(f'Episode ID: "{plexVideoID(episode.media[-1].parts[-1].file)}"') print("Found in following playlists") print(findPlaylists(plexVideoID(episode.media[-1].parts[-1].file))) for collection in findPlaylists(plexVideoID(episode.media[-1].parts[-1].file)): episode.addCollection(collection) print(f'Added to the : "{collection}" Collection') print("")