add script
This commit is contained in:
74
main.py
Normal file
74
main.py
Normal file
@@ -0,0 +1,74 @@
|
||||
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("")
|
||||
Reference in New Issue
Block a user