Option to show MISSING seasons and episodes

@phunkysai said:
Upon further thought, you might have to make two options: “Show missing episodes for latest season only” for those that only want to see missing eps for the current season they are watching, and then “Show all missing episodes for all seasons” for those that want to see everything.

It’s probably been mentioned but you could also show ghosted images for the missing seasons and do this feature on a season by season basis. Builds right into their UI - they would just need to make a new color number overlay or something for the current season. That or show ghosted images of the remaining episodes.

Sickbeard and Sonarr don’t so much SHOW you missing episodes (although they do list them) as they do DOWNLOAD the missing episodes. Their biggest functionality is that, actually.

Upvoted the feature request cuz it’s a nice option for my users.

@brandur said:
I have access to a friends shared library and every time I go into a episode “folder” I have to carefully look if there are missing ones before starting to watch anything(I hate starting to watch a show, to only find out that there are missing episodes in-between them all).

My concern with this is allowing an external client access to the media files. Now if this was a server side feature that could be turned on and shared like media fine, but from my personal experience I already spend enough time managing the episodes I share. One also has to consider the overhead on the PMS. Matching a show or movie is easy enough, but managing missing episodes is something completely different.

Either you are putting more on the PMS owner or much more stress on the application. Episodes aren’t always named correctly so matching with an external source would be a challenge. Maybe some would find the feature helpful, but as a PMS owner with almost 8000 episodes I wouldn’t use it. Managing my current library is difficult enough.

Just my 2 cents

You wouldn’t have to manage anything, and Plex wouldn’t have to do much more work either. Suppose it was an option, and you turned the option ON, then Plex would merely show episodes that were missing (it already has the list of episodes from TVDB or whichever metadata agent)…

@phunkysai said:
You wouldn’t have to manage anything, and Plex wouldn’t have to do much more work either. Suppose it was an option, and you turned the option ON, then Plex would merely show episodes that were missing (it already has the list of episodes from TVDB or whichever metadata agent)…

I already have to manage my media by either making sure the naming convention is correct and that the correct show is selected. Right now the metadata agent only checks your current media file to identify it and it has to be properly named indicating the show, season and episode. In order to check for missing episodes Plex would first have to identify the media using the 3 attributes mentioned, then it would need to query the whatever database that is used for all episodes and compare them to the episodes that you have to identify the missing episodes. That may sound easy, but it’s not and it would be a lot of work for the PMS.

Also keep in mind that it’s really just doing a search for matches using the 3 attributes mentioned, it’s not doing a query of the entire series. That’s why the naming convention is so crucial, it takes FileA and the naming convention allows it to identify that file by Series name, Season and Episode. This happens to every file in that series. On the back end it groups common attributes such as Series Name and Season. So the added feature would require your PMS to match TV shows by Series, download or query the entire series and determine which episodes are missing. So the PMS would need to maintain or be able to query the entire series. That’s a lot of background processing.

emby has this feature(default off).
I miss this feature as much as the day I first created this request :slight_smile:

P.S. The request has nothing to do specifically with shared library’s. That was just a scenario where at the time it would be a big help to me.

@erobby said:

@phunkysai said:
You wouldn’t have to manage anything, and Plex wouldn’t have to do much more work either. Suppose it was an option, and you turned the option ON, then Plex would merely show episodes that were missing (it already has the list of episodes from TVDB or whichever metadata agent)…

I already have to manage my media by either making sure the naming convention is correct and that the correct show is selected. Right now the metadata agent only checks your current media file to identify it and it has to be properly named indicating the show, season and episode. In order to check for missing episodes Plex would first have to identify the media using the 3 attributes mentioned, then it would need to query the whatever database that is used for all episodes and compare them to the episodes that you have to identify the missing episodes. That may sound easy, but it’s not and it would be a lot of work for the PMS.

Also keep in mind that it’s really just doing a search for matches using the 3 attributes mentioned, it’s not doing a query of the entire series. That’s why the naming convention is so crucial, it takes FileA and the naming convention allows it to identify that file by Series name, Season and Episode. This happens to every file in that series. On the back end it groups common attributes such as Series Name and Season. So the added feature would require your PMS to match TV shows by Series, download or query the entire series and determine which episodes are missing. So the PMS would need to maintain or be able to query the entire series. That’s a lot of background processing.

I think that is wrong.
Plex already has the series info locally, even if you just have one episode of a 10 seasons series.
Please do correct me, if I’m wrong.

And remember that it would be an option, so that no one would ever be forced to use the feature :slight_smile:

@erobby said:

Strange…I don’t rename my files, and Plex analyzes and adds them to my library just fine…The downloading app I use - Sonarr - finds episodes, downloads them automatically, and moves them to my PMS for me (heck, I even have a Plex subtitle agent - Subzero - automatically download subs for me when an episode is added). The whole thing is automated. I don’t have to “manage” anything.

Also, PMS already goes out to TVDB (or other metadata agents) and grabs the season info so that it can add it to the library and show your episodes inside of a season. When it’s doing that, it could easily compare which episodes you have in the season compared to what’s out on TVDB. And then the GUI could display missing episodes…

@brandur said:

I think that is wrong.
Plex already has the series info locally, even if you just have one episode of a 10 seasons series.
Please do correct me, if I’m wrong.

And remember that it would be an option, so that no one would ever be forced to use the feature :slight_smile:

Actually it doesn’t have all the series information, it only has what you available. For instance I only have seasons 2,3 and 4 of a TV show and when you look in the database for that show you will see Seasons 2,3 and 4 and not Season 1. So the only information Plex has is what I have available for it. I however look into embry, I’m sure they are having their challenges with that feature.

PS thanks for making me check I now need to get season 1

@phunkysai said:

@erobby said:

Strange…I don’t rename my files, and Plex analyzes and adds them to my library just fine…The downloading app I use - Sonarr - finds episodes, downloads them automatically, and moves them to my PMS for me (heck, I even have a Plex subtitle agent - Subzero - automatically download subs for me when an episode is added). The whole thing is automated. I don’t have to “manage” anything.

Also, PMS already goes out to TVDB (or other metadata agents) and grabs the season info so that it can add it to the library and show your episodes inside of a season. When it’s doing that, it could easily compare which episodes you have in the season compared to what’s out on TVDB. And then the GUI could display missing episodes…

Sonarr has a renaming agent. Honestly, it’s less effort to set up Sonarr than it is to manually download episodes. Within a week or two, the amount of time configuring Sonarr and Deluge is exceeded by the time to manually find the torrents, add them, then rename move the completed file to your library.

Sonnar+CouchPotato+Headphones+Deluge=zero-touch once configured. And really not hard to config.

@Team503 said:
Sonarr has a renaming agent. Honestly, it’s less effort to set up Sonarr than it is to manually download episodes. Within a week or two, the amount of time configuring Sonarr and Deluge is exceeded by the time to manually find the torrents, add them, then rename move the completed file to your library.

Sonnar+CouchPotato+Headphones+Deluge=zero-touch once configured. And really not hard to config.

Thanks, but I’m pretty good at scripting so renaming is not an issue for me either.

I agree with that. I just switched from emby to plex, but this missing feature make me hesitate between the two. +1

+1 Used Mediaportal waaayy back which had this, still really miss it. Didn’t know Emby has it. Plus the ongoing disaster that is Plex on Fire Tv’s, I may need to check Emby out.

Also +1, this would make watching TV shows much easier, I go series watching just to realize that I was missing one or two episodes.

Any news on the possibility of this happening?

Plex doesn’t usually announce new features in advance…

Considering that this post is 5 years old and the simplicity of what it would take to actually implement this feature (Plex ALREADY has the data available when it imports the metadata) I feel pretty confident that it is unlikely that plex will ever implement such a useful function.

These forums seem to be pretty much a circle jerk when it comes to being actually useful and plex truly doesn’t seem too interested in cultivating a community and supporting their existing product, rather their M.O. appears to be one of a company chasing a dollar instead of building a product…

I have been using Plex since 2013 and I may be at my end with them… A LOT of people are talking about Emby and by accounts it already has this function.

Yeah, even if plex doesn’t have the metadata for episodes it can tell that there is a number gap.

etc. episode 20 - 25 are missing when you have episode 19 and 26

I might have to start looking into Emby if it has this very useful feature.

How are other users tracking missing episodes? I currently use Sonnar running on the same server but it doesn’t help other users.

I would like an option for a TV library to show placeholders for missing episodes and seasons, This should be an option that can be turned on/off in the library settings.

And the movie library to show missing Sequels/Prequels.

And if during auto-play at the end of one episode and the next episode in the library is not the next episode of the show then a warning should be shown to the user advising them of the missing episode/s and the option to continue playback or to stop playback (this could also be an option to switch the warning on/off so users an avoid annoying warnings)

Example; User is in the library viewing TV show A season 1 which should have 5 episodes, and the server only has episodes 1, 3 and 5 then there should be blank spaces for episodes 2 and 4. Then if the user plays episode 1, at the end of the episode Plex should show a warning that episode 2 is missing and ask if they wish to proceed to episode 3 or to stop playback.

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