diff --git a/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs b/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs index 68551aac4..5a2b6ed98 100644 --- a/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/PlexAvailabilityRule.cs @@ -27,9 +27,12 @@ namespace Ombi.Core.Rule.Rules.Search var useTheMovieDb = false; var useId = false; var useTvDb = false; + + PlexMediaTypeEntity type = ConvertType(obj.Type); + if (obj.ImdbId.HasValue()) { - item = await PlexContentRepository.Get(obj.ImdbId, ProviderType.ImdbId); + item = await PlexContentRepository.GetByType(obj.ImdbId, ProviderType.ImdbId, type); if (item != null) { useImdb = true; @@ -39,7 +42,7 @@ namespace Ombi.Core.Rule.Rules.Search { if (obj.Id > 0) { - item = await PlexContentRepository.Get(obj.Id.ToString(), ProviderType.TheMovieDbId); + item = await PlexContentRepository.GetByType(obj.Id.ToString(), ProviderType.TheMovieDbId, type); if (item != null) { useId = true; @@ -47,7 +50,7 @@ namespace Ombi.Core.Rule.Rules.Search } if (obj.TheMovieDbId.HasValue()) { - item = await PlexContentRepository.Get(obj.TheMovieDbId, ProviderType.TheMovieDbId); + item = await PlexContentRepository.GetByType(obj.TheMovieDbId, ProviderType.TheMovieDbId, type); if (item != null) { useTheMovieDb = true; @@ -58,7 +61,7 @@ namespace Ombi.Core.Rule.Rules.Search { if (obj.TheTvDbId.HasValue()) { - item = await PlexContentRepository.Get(obj.TheTvDbId, ProviderType.TvDbId); + item = await PlexContentRepository.GetByType(obj.TheTvDbId, ProviderType.TvDbId, type); if (item != null) { useTvDb = true; @@ -100,6 +103,12 @@ namespace Ombi.Core.Rule.Rules.Search return Success(); } - + private PlexMediaTypeEntity ConvertType(RequestType type) => + type switch + { + RequestType.Movie => PlexMediaTypeEntity.Movie, + RequestType.TvShow => PlexMediaTypeEntity.Show, + _ => PlexMediaTypeEntity.Movie, + }; } } \ No newline at end of file diff --git a/src/Ombi.Helpers/PlexHelper.cs b/src/Ombi.Helpers/PlexHelper.cs index 08548b8c9..506e0939f 100644 --- a/src/Ombi.Helpers/PlexHelper.cs +++ b/src/Ombi.Helpers/PlexHelper.cs @@ -107,7 +107,7 @@ namespace Ombi.Helpers public static string GetPlexMediaUrl(string machineId, int mediaId) { var url = - $"https://app.plex.tv/web/app#!/server/{machineId}/details?key=library%2Fmetadata%2F{mediaId}"; + $"https://app.plex.tv/web/app#!/server/{machineId}/details?key=%2flibrary%2Fmetadata%2F{mediaId}"; return url; } diff --git a/src/Ombi.Store/Repository/IPlexContentRepository.cs b/src/Ombi.Store/Repository/IPlexContentRepository.cs index d1d30a630..38c013cb1 100644 --- a/src/Ombi.Store/Repository/IPlexContentRepository.cs +++ b/src/Ombi.Store/Repository/IPlexContentRepository.cs @@ -12,6 +12,7 @@ namespace Ombi.Store.Repository { Task ContentExists(string providerId); Task Get(string providerId, ProviderType type); + Task GetByType(string providerId, ProviderType type, PlexMediaTypeEntity plexType); Task GetByKey(int key); Task Update(PlexServerContent existingContent); IQueryable GetAllEpisodes(); diff --git a/src/Ombi.Store/Repository/PlexContentRepository.cs b/src/Ombi.Store/Repository/PlexContentRepository.cs index e5c31172e..31b3bad11 100644 --- a/src/Ombi.Store/Repository/PlexContentRepository.cs +++ b/src/Ombi.Store/Repository/PlexContentRepository.cs @@ -79,6 +79,23 @@ namespace Ombi.Store.Repository return null; } + public async Task GetByType(string providerId, ProviderType type, PlexMediaTypeEntity plexType) + { + switch (type) + { + case ProviderType.ImdbId: + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId && x.Type == plexType); + case ProviderType.TheMovieDbId: + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId && x.Type == plexType); + case ProviderType.TvDbId: + return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId && x.Type == plexType); + default: + break; + } + + return null; + } + public async Task GetByKey(int key) { return await Db.PlexServerContent.Include(x => x.Seasons).FirstOrDefaultAsync(x => x.Key == key); diff --git a/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html b/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html index 4f44fe1be..0c5f28517 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/movie/movie-details.component.html @@ -49,7 +49,7 @@ {{'Search.ViewOnEmby' | translate}} - + {{'Search.ViewOnJellyfin' | translate}}