mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 05:23:31 -07:00
Fixed an issue where tracked downloads would not be found in the database due to alternative titles.
This commit is contained in:
parent
a263558383
commit
82470bd995
3 changed files with 61 additions and 4 deletions
|
@ -60,10 +60,14 @@ namespace NzbDrone.Core.Download.TrackedDownloads
|
|||
var parsedMovieInfo = Parser.Parser.ParseMovieTitle(trackedDownload.DownloadItem.Title);
|
||||
var historyItems = _historyService.FindByDownloadId(downloadItem.DownloadId);
|
||||
|
||||
if (parsedMovieInfo != null)
|
||||
{
|
||||
trackedDownload.RemoteMovie = _parsingService.Map(parsedMovieInfo, "", null);
|
||||
}
|
||||
|
||||
if (parsedEpisodeInfo != null)
|
||||
{
|
||||
trackedDownload.RemoteEpisode = _parsingService.Map(parsedEpisodeInfo, 0, 0);
|
||||
trackedDownload.RemoteMovie = _parsingService.Map(parsedMovieInfo, "", null);
|
||||
}
|
||||
|
||||
if (historyItems.Any())
|
||||
|
|
|
@ -64,7 +64,7 @@ namespace NzbDrone.Core.Queue
|
|||
Id = HashConverter.GetHashInt31(string.Format("trackedDownload-{0}", trackedDownload.DownloadItem.DownloadId)),
|
||||
Series = null,
|
||||
Episode = null,
|
||||
Quality = trackedDownload.RemoteMovie.ParsedEpisodeInfo.Quality,
|
||||
Quality = trackedDownload.RemoteMovie.ParsedMovieInfo.Quality,
|
||||
Title = trackedDownload.DownloadItem.Title,
|
||||
Size = trackedDownload.DownloadItem.TotalSize,
|
||||
Sizeleft = trackedDownload.DownloadItem.RemainingSize,
|
||||
|
|
|
@ -19,6 +19,21 @@ namespace NzbDrone.Core.Tv
|
|||
|
||||
public class MovieRepository : BasicRepository<Movie>, IMovieRepository
|
||||
{
|
||||
private readonly Dictionary<string, string> romanNumeralsMapper = new Dictionary<string, string>
|
||||
{
|
||||
{ "1", "I"},
|
||||
{ "2", "II"},
|
||||
{ "3", "III"},
|
||||
{ "4", "IV"},
|
||||
{ "5", "V"},
|
||||
{ "6", "VI"},
|
||||
{ "7", "VII"},
|
||||
{ "8", "VII"},
|
||||
{ "9", "IX"},
|
||||
{ "10", "X"},
|
||||
|
||||
}; //If a movie has more than 10 parts fuck 'em.
|
||||
|
||||
public MovieRepository(IMainDatabase database, IEventAggregator eventAggregator)
|
||||
: base(database, eventAggregator)
|
||||
{
|
||||
|
@ -33,8 +48,46 @@ namespace NzbDrone.Core.Tv
|
|||
{
|
||||
cleanTitle = cleanTitle.ToLowerInvariant();
|
||||
|
||||
return Query.Where(s => s.CleanTitle == cleanTitle)
|
||||
.SingleOrDefault();
|
||||
var cleanRoman = cleanTitle;
|
||||
|
||||
var cleanNum = cleanTitle;
|
||||
|
||||
foreach (KeyValuePair<string, string> entry in romanNumeralsMapper)
|
||||
{
|
||||
string num = entry.Key;
|
||||
string roman = entry.Value.ToLower();
|
||||
|
||||
cleanRoman = cleanRoman.Replace(num, roman);
|
||||
|
||||
cleanNum = cleanNum.Replace(roman, num);
|
||||
}
|
||||
|
||||
var result = Query.Where(s => s.CleanTitle == cleanTitle).SingleOrDefault();
|
||||
|
||||
if (result == null)
|
||||
{
|
||||
result = Query.Where(s => s.CleanTitle == cleanNum).OrWhere(s => s.CleanTitle == cleanRoman).SingleOrDefault();
|
||||
|
||||
if (result == null)
|
||||
{
|
||||
var movies = this.All();
|
||||
|
||||
result = movies.Where(m => m.AlternativeTitles.Any(t => Parser.Parser.CleanSeriesTitle(t.ToLower()) == cleanTitle ||
|
||||
Parser.Parser.CleanSeriesTitle(t.ToLower()) == cleanRoman ||
|
||||
Parser.Parser.CleanSeriesTitle(t.ToLower()) == cleanNum)).SingleOrDefault();
|
||||
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public Movie FindByTitle(string cleanTitle, int year)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue