from config.config import Config from tmdbv3api import TMDb, Movie, Collection from plexapi.server import PlexServer from fuzzywuzzy import fuzz from models.movie_collection import MovieCollection # Instantiate Tmdb object tmdb = TMDb() tmdb.api_key = Config.tmdbApiKey tmdb.language = Config.tmdbLanguage # Instantiate TMDb movie & collection object tmdbMovie = Movie() tmdbCollection = Collection() # Connect to Plex Server baseurl = Config.plexBaseUrl token = Config.plexToken plex = PlexServer(baseurl, token) # Create empty lists AvailablePlexCollectionsMovies = [] PlexMovieList = [] MatchingList = [] TMDbCollection = [] MovieCollectionFinal = [] # Retrieve the library Movies from Plex plexMoviesLibrary = plex.library.section('Movies') for movie in plexMoviesLibrary.search(): for collection in movie.collections: if collection.tag and collection.tag not in AvailablePlexCollectionsMovies: AvailablePlexCollectionsMovies.append(collection.tag) PlexMovieList.append(movie.title) i = 0 length = len(PlexMovieList) while i < length:z for movie in PlexMovieList: if 85 < fuzz.ratio(PlexMovieList[i], movie) < 100: if PlexMovieList[i] not in MatchingList: MatchingList.append(PlexMovieList[i]) i += 1 for movie in MatchingList: movieSearch = tmdbMovie.search(movie) movieId = movieSearch[0].id movieDetails = tmdbMovie.details(movie_id=movieId) if movieDetails.belongs_to_collection is not None: collectionId = movieDetails.belongs_to_collection if collectionId.id not in TMDbCollection: TMDbCollection.append(collectionId.id) for id in TMDbCollection: MovieCollectionFinal.append(tmdbCollection.details(id)) for movie in MovieCollectionFinal: print(movie)