Fixed the issue where searching some movies may appear available if they have the same TvDb Id as the result's MovieDbId...

pull/4185/head
tidusjar 3 years ago
parent 264568f396
commit 0ad573a98a

@ -29,7 +29,7 @@ namespace Ombi.Core.Rule.Rules.Search
var useTvDb = false; var useTvDb = false;
if (obj.ImdbId.HasValue()) if (obj.ImdbId.HasValue())
{ {
item = await PlexContentRepository.Get(obj.ImdbId); item = await PlexContentRepository.Get(obj.ImdbId, ProviderType.ImdbId);
if (item != null) if (item != null)
{ {
useImdb = true; useImdb = true;
@ -39,7 +39,7 @@ namespace Ombi.Core.Rule.Rules.Search
{ {
if (obj.Id > 0) if (obj.Id > 0)
{ {
item = await PlexContentRepository.Get(obj.Id.ToString()); item = await PlexContentRepository.Get(obj.Id.ToString(), ProviderType.TheMovieDbId);
if (item != null) if (item != null)
{ {
useId = true; useId = true;
@ -47,7 +47,7 @@ namespace Ombi.Core.Rule.Rules.Search
} }
if (obj.TheMovieDbId.HasValue()) if (obj.TheMovieDbId.HasValue())
{ {
item = await PlexContentRepository.Get(obj.TheMovieDbId); item = await PlexContentRepository.Get(obj.TheMovieDbId, ProviderType.TheMovieDbId);
if (item != null) if (item != null)
{ {
useTheMovieDb = true; useTheMovieDb = true;
@ -58,7 +58,7 @@ namespace Ombi.Core.Rule.Rules.Search
{ {
if (obj.TheTvDbId.HasValue()) if (obj.TheTvDbId.HasValue())
{ {
item = await PlexContentRepository.Get(obj.TheTvDbId); item = await PlexContentRepository.Get(obj.TheTvDbId, ProviderType.TvDbId);
if (item != null) if (item != null)
{ {
useTvDb = true; useTvDb = true;

@ -61,6 +61,7 @@ namespace Ombi.Helpers.Tests
get get
{ {
yield return new TestCaseData("plex://movie/5e1632df2d4d84003e48e54e|imdb://tt9178402|tmdb://610201", new ProviderId { ImdbId = "tt9178402", TheMovieDb = "610201" }).SetName("V2 Regular Plex Id"); yield return new TestCaseData("plex://movie/5e1632df2d4d84003e48e54e|imdb://tt9178402|tmdb://610201", new ProviderId { ImdbId = "tt9178402", TheMovieDb = "610201" }).SetName("V2 Regular Plex Id");
yield return new TestCaseData("plex://movie/5e1632df2d4d84003e48e54e|imdb://tt9178402|tmdb://610201|thetvdb://12345", new ProviderId { ImdbId = "tt9178402", TheMovieDb = "610201", TheTvDb = "12345" }).SetName("V2 Regular Plex Id w/ tvdb");
yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|imdb://tt0119567|tmdb://330", new ProviderId { ImdbId = "tt0119567", TheMovieDb = "330" }).SetName("V2 Regular Plex Id Another"); yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|imdb://tt0119567|tmdb://330", new ProviderId { ImdbId = "tt0119567", TheMovieDb = "330" }).SetName("V2 Regular Plex Id Another");
yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|imdb://tt0119567", new ProviderId { ImdbId = "tt0119567" }).SetName("V2 Regular Plex Id Single Imdb"); yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|imdb://tt0119567", new ProviderId { ImdbId = "tt0119567" }).SetName("V2 Regular Plex Id Single Imdb");
yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|tmdb://330", new ProviderId { TheMovieDb = "330" }).SetName("V2 Regular Plex Id Single Tmdb"); yield return new TestCaseData("plex://movie/5d7768253c3c2a001fbcab72|tmdb://330", new ProviderId { TheMovieDb = "330" }).SetName("V2 Regular Plex Id Single Tmdb");

@ -183,13 +183,13 @@ namespace Ombi.Schedule.Jobs.Plex
PlexServerContent item = null; PlexServerContent item = null;
if (movie.ImdbId.HasValue()) if (movie.ImdbId.HasValue())
{ {
item = await _repo.Get(movie.ImdbId); item = await _repo.Get(movie.ImdbId, ProviderType.ImdbId);
} }
if (item == null) if (item == null)
{ {
if (movie.TheMovieDbId.ToString().HasValue()) if (movie.TheMovieDbId.ToString().HasValue())
{ {
item = await _repo.Get(movie.TheMovieDbId.ToString()); item = await _repo.Get(movie.TheMovieDbId.ToString(), ProviderType.TheMovieDbId);
} }
} }
if (item == null) if (item == null)

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Ombi.Helpers;
using Ombi.Store.Entities; using Ombi.Store.Entities;
namespace Ombi.Store.Repository namespace Ombi.Store.Repository
@ -10,7 +11,7 @@ namespace Ombi.Store.Repository
public interface IPlexContentRepository : IExternalRepository<PlexServerContent> public interface IPlexContentRepository : IExternalRepository<PlexServerContent>
{ {
Task<bool> ContentExists(string providerId); Task<bool> ContentExists(string providerId);
Task<PlexServerContent> Get(string providerId); Task<PlexServerContent> Get(string providerId, ProviderType type);
Task<PlexServerContent> GetByKey(int key); Task<PlexServerContent> GetByKey(int key);
Task Update(PlexServerContent existingContent); Task Update(PlexServerContent existingContent);
IQueryable<PlexEpisode> GetAllEpisodes(); IQueryable<PlexEpisode> GetAllEpisodes();

@ -31,6 +31,7 @@ using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Ombi.Helpers;
using Ombi.Store.Context; using Ombi.Store.Context;
using Ombi.Store.Entities; using Ombi.Store.Entities;
@ -61,18 +62,21 @@ namespace Ombi.Store.Repository
return any; return any;
} }
public async Task<PlexServerContent> Get(string providerId) public async Task<PlexServerContent> Get(string providerId, ProviderType type)
{ {
var item = await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId); switch (type)
if (item == null)
{ {
item = await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId); case ProviderType.ImdbId:
if (item == null) return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.ImdbId == providerId);
{ case ProviderType.TheMovieDbId:
item = await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId); return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TheMovieDbId == providerId);
} case ProviderType.TvDbId:
return await Db.PlexServerContent.FirstOrDefaultAsync(x => x.TvDbId == providerId);
default:
break;
} }
return item;
return null;
} }
public async Task<PlexServerContent> GetByKey(int key) public async Task<PlexServerContent> GetByKey(int key)

Loading…
Cancel
Save