diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index cdf86f436..2abd18fb2 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -24,13 +24,15 @@ namespace NzbDrone.Core.MetadataSource.SkyHook private readonly IHttpRequestBuilderFactory _requestBuilder; private readonly IHttpRequestBuilderFactory _movieBuilder; private readonly ITmdbConfigService _configService; + private readonly IMovieService _movieService; - public SkyHookProxy(IHttpClient httpClient, ISonarrCloudRequestBuilder requestBuilder, ITmdbConfigService configService, Logger logger) + public SkyHookProxy(IHttpClient httpClient, ISonarrCloudRequestBuilder requestBuilder, ITmdbConfigService configService, IMovieService movieService, Logger logger) { _httpClient = httpClient; _requestBuilder = requestBuilder.SkyHookTvdb; _movieBuilder = requestBuilder.TMDB; _configService = configService; + _movieService = movieService; _logger = logger; } @@ -93,6 +95,13 @@ namespace NzbDrone.Core.MetadataSource.SkyHook movie.InCinemas = DateTime.Parse(resource.release_date); movie.Year = movie.InCinemas.Value.Year; + var slugResult = _movieService.FindByTitleSlug(movie.TitleSlug); + if (slugResult != null) + { + _logger.Debug("Movie with this title slug already exists. Adding year..."); + } + movie.TitleSlug += "-" + movie.Year.ToString(); + movie.Images.Add(_configService.GetCoverForURL(resource.poster_path, MediaCoverTypes.Poster));//TODO: Update to load image specs from tmdb page! movie.Images.Add(_configService.GetCoverForURL(resource.backdrop_path, MediaCoverTypes.Banner)); movie.Runtime = resource.runtime; @@ -320,6 +329,14 @@ namespace NzbDrone.Core.MetadataSource.SkyHook string titleSlug = result.title; imdbMovie.TitleSlug = titleSlug.ToLower().Replace(" ", "-"); imdbMovie.Year = DateTime.Parse(result.release_date).Year; + + var slugResult = _movieService.FindByTitleSlug(imdbMovie.TitleSlug); + if (slugResult != null) + { + _logger.Debug("Movie with this title slug already exists. Adding year..."); + } + imdbMovie.TitleSlug += "-" + imdbMovie.Year.ToString(); + imdbMovie.Images = new List(); imdbMovie.Overview = result.overview; try diff --git a/src/NzbDrone.Core/Tv/MovieRepository.cs b/src/NzbDrone.Core/Tv/MovieRepository.cs index 6c046d190..8267de29b 100644 --- a/src/NzbDrone.Core/Tv/MovieRepository.cs +++ b/src/NzbDrone.Core/Tv/MovieRepository.cs @@ -13,6 +13,7 @@ namespace NzbDrone.Core.Tv Movie FindByTitle(string cleanTitle); Movie FindByTitle(string cleanTitle, int year); Movie FindByImdbId(string imdbid); + Movie FindByTitleSlug(string slug); List GetMoviesByFileId(int fileId); void SetFileId(int fileId, int movieId); } @@ -114,5 +115,9 @@ namespace NzbDrone.Core.Tv SetFields(new Movie { Id = episodeId, MovieFileId = fileId }, movie => movie.MovieFileId); } + public Movie FindByTitleSlug(string slug) + { + return Query.Where(m => m.TitleSlug == slug).FirstOrDefault(); + } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/Tv/MovieService.cs b/src/NzbDrone.Core/Tv/MovieService.cs index e61279cac..ac9c132db 100644 --- a/src/NzbDrone.Core/Tv/MovieService.cs +++ b/src/NzbDrone.Core/Tv/MovieService.cs @@ -24,6 +24,7 @@ namespace NzbDrone.Core.Tv Movie FindByTitle(string title); Movie FindByTitle(string title, int year); Movie FindByTitleInexact(string title); + Movie FindByTitleSlug(string slug); Movie GetMovieByFileId(int fileId); void DeleteMovie(int movieId, bool deleteFiles); List GetAllMovies(); @@ -218,5 +219,10 @@ namespace NzbDrone.Core.Tv { return _movieRepository.GetMoviesByFileId(fileId).First(); } + + public Movie FindByTitleSlug(string slug) + { + return _movieRepository.FindByTitleSlug(slug); + } } }