mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 13:33:34 -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 parsedMovieInfo = Parser.Parser.ParseMovieTitle(trackedDownload.DownloadItem.Title);
|
||||||
var historyItems = _historyService.FindByDownloadId(downloadItem.DownloadId);
|
var historyItems = _historyService.FindByDownloadId(downloadItem.DownloadId);
|
||||||
|
|
||||||
|
if (parsedMovieInfo != null)
|
||||||
|
{
|
||||||
|
trackedDownload.RemoteMovie = _parsingService.Map(parsedMovieInfo, "", null);
|
||||||
|
}
|
||||||
|
|
||||||
if (parsedEpisodeInfo != null)
|
if (parsedEpisodeInfo != null)
|
||||||
{
|
{
|
||||||
trackedDownload.RemoteEpisode = _parsingService.Map(parsedEpisodeInfo, 0, 0);
|
trackedDownload.RemoteEpisode = _parsingService.Map(parsedEpisodeInfo, 0, 0);
|
||||||
trackedDownload.RemoteMovie = _parsingService.Map(parsedMovieInfo, "", null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (historyItems.Any())
|
if (historyItems.Any())
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace NzbDrone.Core.Queue
|
||||||
Id = HashConverter.GetHashInt31(string.Format("trackedDownload-{0}", trackedDownload.DownloadItem.DownloadId)),
|
Id = HashConverter.GetHashInt31(string.Format("trackedDownload-{0}", trackedDownload.DownloadItem.DownloadId)),
|
||||||
Series = null,
|
Series = null,
|
||||||
Episode = null,
|
Episode = null,
|
||||||
Quality = trackedDownload.RemoteMovie.ParsedEpisodeInfo.Quality,
|
Quality = trackedDownload.RemoteMovie.ParsedMovieInfo.Quality,
|
||||||
Title = trackedDownload.DownloadItem.Title,
|
Title = trackedDownload.DownloadItem.Title,
|
||||||
Size = trackedDownload.DownloadItem.TotalSize,
|
Size = trackedDownload.DownloadItem.TotalSize,
|
||||||
Sizeleft = trackedDownload.DownloadItem.RemainingSize,
|
Sizeleft = trackedDownload.DownloadItem.RemainingSize,
|
||||||
|
|
|
@ -19,6 +19,21 @@ namespace NzbDrone.Core.Tv
|
||||||
|
|
||||||
public class MovieRepository : BasicRepository<Movie>, IMovieRepository
|
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)
|
public MovieRepository(IMainDatabase database, IEventAggregator eventAggregator)
|
||||||
: base(database, eventAggregator)
|
: base(database, eventAggregator)
|
||||||
{
|
{
|
||||||
|
@ -33,8 +48,46 @@ namespace NzbDrone.Core.Tv
|
||||||
{
|
{
|
||||||
cleanTitle = cleanTitle.ToLowerInvariant();
|
cleanTitle = cleanTitle.ToLowerInvariant();
|
||||||
|
|
||||||
return Query.Where(s => s.CleanTitle == cleanTitle)
|
var cleanRoman = cleanTitle;
|
||||||
.SingleOrDefault();
|
|
||||||
|
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)
|
public Movie FindByTitle(string cleanTitle, int year)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue