From 8caf648a0b3760f23e5363270446ef65e3afcec6 Mon Sep 17 00:00:00 2001 From: Leonardo Galli Date: Sun, 10 Sep 2017 15:58:31 +0200 Subject: [PATCH] Fixed: Alt titles with less than 4 votes being used. --- .../AlternativeTitleRepository.cs | 18 ++++++++++++++++-- .../AlternativeTitleService.cs | 13 +++++++++++++ src/NzbDrone.Core/NzbDrone.Core.csproj | 1 + src/NzbDrone.Core/Tv/RefreshMovieService.cs | 14 ++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs index 5a711b872..539e31d8e 100644 --- a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs +++ b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleRepository.cs @@ -1,11 +1,15 @@ -using NzbDrone.Core.Datastore; +using System.Collections.Generic; +using System.Linq; +using NzbDrone.Common.Extensions; +using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; namespace NzbDrone.Core.Movies.AlternativeTitles { public interface IAlternativeTitleRepository : IBasicRepository { - + AlternativeTitle FindBySourceId(int sourceId); + List FindBySourceIds(List sourceIds); } public class AlternativeTitleRepository : BasicRepository, IAlternativeTitleRepository @@ -17,5 +21,15 @@ namespace NzbDrone.Core.Movies.AlternativeTitles { _database = database; } + + public AlternativeTitle FindBySourceId(int sourceId) + { + return Query.Where(t => t.SourceId == sourceId).FirstOrDefault(); + } + + public List FindBySourceIds(List sourceIds) + { + return Query.Where(t => t.SourceId.In(sourceIds)).ToList(); + } } } diff --git a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs index aee69c0d2..c19b42af6 100644 --- a/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs +++ b/src/NzbDrone.Core/Movies/AlternativeTitles/AlternativeTitleService.cs @@ -23,6 +23,7 @@ namespace NzbDrone.Core.Movies.AlternativeTitles AlternativeTitle AddAltTitle(AlternativeTitle title, Movie movie); List AddAltTitles(List titles, Movie movie); AlternativeTitle GetById(int id); + void DeleteNotEnoughVotes(List mappingsTitles); } public class AlternativeTitleService : IAlternativeTitleService @@ -66,5 +67,17 @@ namespace NzbDrone.Core.Movies.AlternativeTitles { return _titleRepo.Get(id); } + + public void RemoveTitle(AlternativeTitle title) + { + _titleRepo.Delete(title); + } + + public void DeleteNotEnoughVotes(List mappingsTitles) + { + var toRemove = mappingsTitles.Where(t => t.SourceType == SourceType.Mappings && t.Votes < 4); + var realT = _titleRepo.FindBySourceIds(toRemove.Select(t => t.SourceId).ToList()); + _titleRepo.DeleteMany(realT); + } } } diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index df8451e87..03beb294a 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -126,6 +126,7 @@ + diff --git a/src/NzbDrone.Core/Tv/RefreshMovieService.cs b/src/NzbDrone.Core/Tv/RefreshMovieService.cs index a866c52b6..84c6f1ec5 100644 --- a/src/NzbDrone.Core/Tv/RefreshMovieService.cs +++ b/src/NzbDrone.Core/Tv/RefreshMovieService.cs @@ -121,9 +121,14 @@ namespace NzbDrone.Core.Tv var mappingsTitles = mappings.Item1; movie.AlternativeTitles.AddRange(_titleService.AddAltTitles(movieInfo.AlternativeTitles, movie)); + + _titleService.DeleteNotEnoughVotes(mappingsTitles); mappingsTitles = mappingsTitles.ExceptBy(t => t.CleanTitle, movie.AlternativeTitles, t => t.CleanTitle, EqualityComparer.Default).ToList(); + + + mappingsTitles = mappingsTitles.Where(t => t.Votes > 3).ToList(); movie.AlternativeTitles.AddRange(_titleService.AddAltTitles(mappingsTitles, movie)); @@ -132,11 +137,20 @@ namespace NzbDrone.Core.Tv movie.SecondaryYear = mappings.Item2.Year; movie.SecondaryYearSourceId = mappings.Item2.SourceId; } + else + { + movie.SecondaryYear = null; + movie.SecondaryYearSourceId = 0; + } } catch (RadarrAPIException ex) { //Not that wild, could just be a 404. } + catch (Exception ex) + { + _logger.Info(ex, "Unable to communicate with Mappings Server."); + } _movieService.UpdateMovie(movie);