Here is my Python3 script that looks up missing episodes at TMDB (API Key needed):
from plexapi.myplex import MyPlexAccount
from plexapi.video import Show
import isle
"""
Requirements:
pip install plexapi
pip install isle
by christian@karrie.info
"""
TMDB3_KEY = "Get yours at https://www.themoviedb.org/settings/api"
PLEX_USERNAME = 'yourplexusername'
PLEX_PASSWORD = 'yourplexpassword'
PLEX_SERVERNAME = 'yourplexservername'
account = MyPlexAccount(PLEX_USERNAME, PLEX_PASSWORD)
plex = account.resource(PLEX_SERVERNAME).connect()
isle.TMDB_API_KEY = TMDB3_KEY
SHOW_NAME = "Das A-Team"
TMDB_LANG = 'DE'
print('Looking up "%(sn)s" - this may can take a while' % {
'sn': SHOW_NAME
})
results = plex.search(query=SHOW_NAME)
for result_item in results:
if isinstance(result_item, Show):
# get existing episodes from show
found_plex_episodes = []
found_tmdb_episodes = []
episodes = result_item.episodes()
for ep in episodes:
found_plex_episodes.append(ep)
print(" - %(show)s: Found Plex %(ex)d episodes" % {
'show': result_item.title,
'ex': len(found_plex_episodes)
})
print(" - %(show)s: Looking up at TheMovieDB.org" % {
'show': result_item.title,
})
print(" - GUID: ", result_item.guid)
show = next(isle.search_show(SHOW_NAME))
print(" -", show.title.get(TMDB_LANG, show.title['default']), show.first_air_date)
seasons = show.seasons
for season in seasons:
for tmdb_episode in season.episodes:
found_tmdb_episodes.append(tmdb_episode)
# converting to ['s01e10', 's01e11', ...]
found_plex_episodes_se = []
found_tmdb_episodes_se = []
for fpe in found_plex_episodes:
found_plex_episodes_se.append(fpe.seasonEpisode)
for fte in found_tmdb_episodes:
found_tmdb_episodes_se.append('s%(seas)se%(ep)s' % {
'seas': str(fte.sn).zfill(2),
'ep': str(fte.n).zfill(2),
})
print(" - found_plex_episodes=", found_plex_episodes_se)
print(" - found_tmdb_episodes=", found_tmdb_episodes_se)
# comparing, reference is tmdb
diff = list(set(found_tmdb_episodes_se) - set(found_plex_episodes_se))
diff.sort()
print(" - Missing episodes: ")
for d in diff:
tmdb_episode_idx = found_tmdb_episodes_se.index(d)
tmdb_episode = found_tmdb_episodes[tmdb_episode_idx]
title = tmdb_episode.title.get(TMDB_LANG, tmdb_episode.title['default'])
print(" -", d, tmdb_episode, title)
Example output:
python missing_episodes.py
Looking up "Das A-Team" - this may can take a while
- Das A-Team: Found Plex 97 episodes
- Das A-Team: Looking up at TheMovieDB.org
- GUID: com.plexapp.agents.thetvdb://77904?lang=de
- Das A-Team 1983-01-23
- found_plex_episodes= ['s01e01', 's01e02', 's01e03', 's01e04', 's01e05', 's01e06', 's01e07', 's01e08', 's01e09', 's01e10', 's01e11', 's01e12', 's01e13', 's01e14', 's02e01', 's02e02', 's02e03', 's02e04', 's02e05', 's02e07', 's02e08', 's02e09', 's02e10', 's02e11', 's02e12', 's02e13', 's02e14', 's02e15', 's02e16', 's02e17', 's02e18', 's02e19', 's02e20', 's02e21', 's02e22', 's02e23', 's03e01', 's03e02', 's03e03', 's03e04', 's03e05', 's03e06', 's03e07', 's03e08', 's03e09', 's03e10', 's03e11', 's03e12', 's03e13', 's03e14', 's03e15', 's03e16', 's03e17', 's03e18', 's03e19', 's03e20', 's03e21', 's03e22', 's03e23', 's03e24', 's03e25', 's04e01', 's04e02', 's04e03', 's04e04', 's04e05', 's04e06', 's04e07', 's04e08', 's04e09', 's04e10', 's04e11', 's04e12', 's04e13', 's04e14', 's04e15', 's04e16', 's04e17', 's04e18', 's04e19', 's04e20', 's04e21', 's04e22', 's04e23', 's05e01', 's05e02', 's05e03', 's05e04', 's05e05', 's05e06', 's05e07', 's05e08', 's05e09', 's05e10', 's05e11', 's05e12', 's05e13']
- found_tmdb_episodes= ['s00e01', 's00e02', 's00e03', 's00e04', 's00e05', 's01e01', 's01e02', 's01e03', 's01e04', 's01e05', 's01e06', 's01e07', 's01e08', 's01e09', 's01e10', 's01e11', 's01e12', 's01e13', 's01e14', 's02e01', 's02e02', 's02e03', 's02e04', 's02e05', 's02e06', 's02e07', 's02e08', 's02e09', 's02e10', 's02e11', 's02e12', 's02e13', 's02e14', 's02e15', 's02e16', 's02e17', 's02e18', 's02e19', 's02e20', 's02e21', 's02e22', 's02e23', 's03e01', 's03e02', 's03e03', 's03e04', 's03e05', 's03e06', 's03e07', 's03e08', 's03e09', 's03e10', 's03e11', 's03e12', 's03e13', 's03e14', 's03e15', 's03e16', 's03e17', 's03e18', 's03e19', 's03e20', 's03e21', 's03e22', 's03e23', 's03e24', 's03e25', 's04e01', 's04e02', 's04e03', 's04e04', 's04e05', 's04e06', 's04e07', 's04e08', 's04e09', 's04e10', 's04e11', 's04e12', 's04e13', 's04e14', 's04e15', 's04e16', 's04e17', 's04e18', 's04e19', 's04e20', 's04e21', 's04e22', 's04e23', 's05e01', 's05e02', 's05e03', 's05e04', 's05e05', 's05e06', 's05e07', 's05e08', 's05e09', 's05e10', 's05e11', 's05e12', 's05e13']
- Missing episodes:
- s00e01 Episode(74889) BONUS: Season 5 EP: The Point of No Return
- s00e02 Episode(74891) BONUS: The Great 80s TV Flashback
- s00e03 Episode(74883) Rumours of Soldiers of Fortune, Interview with Stephen J. Cannell
- s00e04 Episode(74882) Bring Back... The A-Team
- s00e05 Episode(74892) The A-Team (2010)
- s02e06 Episode(74741) Der Retter der Prärie