Updated the Emby availability checker to bring it more in line with what we do with Plex.

This commit is contained in:
TidusJar 2018-07-06 08:36:36 +01:00
commit 185c87ab40
2 changed files with 43 additions and 9 deletions

View file

@ -121,24 +121,53 @@ namespace Ombi.Schedule.Jobs.Emby
foreach (var child in tv) foreach (var child in tv)
{ {
IQueryable<EmbyEpisode> seriesEpisodes;
if (child.ParentRequest.TvDbId > 0) var useImdb = false;
var useTvDb = false;
if (child.ParentRequest.ImdbId.HasValue())
{ {
seriesEpisodes = embyEpisodes.Where(x => x.Series.TvDbId == child.ParentRequest.TvDbId.ToString()); useImdb = true;
} }
else if(child.ParentRequest.ImdbId.HasValue())
if (child.ParentRequest.TvDbId.ToString().HasValue())
{ {
seriesEpisodes = embyEpisodes.Where(x => x.Series.ImdbId == child.ParentRequest.ImdbId); useTvDb = true;
} }
else
var tvDbId = child.ParentRequest.TvDbId;
var imdbId = child.ParentRequest.ImdbId;
IQueryable<EmbyEpisode> seriesEpisodes = null;
if (useImdb)
{
seriesEpisodes = embyEpisodes.Where(x => x.Series.ImdbId == imdbId.ToString());
}
if (useTvDb && (seriesEpisodes == null || !seriesEpisodes.Any()))
{
seriesEpisodes = embyEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString());
}
if (seriesEpisodes == null)
{ {
continue; continue;
} }
if (!seriesEpisodes.Any())
{
// Let's try and match the series by name
seriesEpisodes = embyEpisodes.Where(x =>
x.Series.Title.Equals(child.Title, StringComparison.CurrentCultureIgnoreCase));
}
foreach (var season in child.SeasonRequests) foreach (var season in child.SeasonRequests)
{ {
foreach (var episode in season.Episodes) foreach (var episode in season.Episodes)
{ {
if (episode.Available)
{
continue;
}
var foundEp = await seriesEpisodes.FirstOrDefaultAsync( var foundEp = await seriesEpisodes.FirstOrDefaultAsync(
x => x.EpisodeNumber == episode.EpisodeNumber && x => x.EpisodeNumber == episode.EpisodeNumber &&
x.SeasonNumber == episode.Season.SeasonNumber); x.SeasonNumber == episode.Season.SeasonNumber);
@ -160,9 +189,9 @@ namespace Ombi.Schedule.Jobs.Emby
{ {
DateTime = DateTime.Now, DateTime = DateTime.Now,
NotificationType = NotificationType.RequestAvailable, NotificationType = NotificationType.RequestAvailable,
RequestId = child.ParentRequestId, RequestId = child.Id,
RequestType = RequestType.TvShow, RequestType = RequestType.TvShow,
Recipient = child.RequestedUser.Email, Recipient = child.RequestedUser.Email
})); }));
} }
} }

View file

@ -79,11 +79,16 @@ namespace Ombi.Schedule.Jobs.Plex
{ {
seriesEpisodes = plexEpisodes.Where(x => x.Series.ImdbId == imdbId.ToString()); seriesEpisodes = plexEpisodes.Where(x => x.Series.ImdbId == imdbId.ToString());
} }
if (useTvDb) if (useTvDb && (seriesEpisodes == null || !seriesEpisodes.Any()) )
{ {
seriesEpisodes = plexEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString()); seriesEpisodes = plexEpisodes.Where(x => x.Series.TvDbId == tvDbId.ToString());
} }
if (seriesEpisodes == null)
{
continue;
}
if (!seriesEpisodes.Any()) if (!seriesEpisodes.Any())
{ {
// Let's try and match the series by name // Let's try and match the series by name