Use DownloadClientIds to find matching series/episodes instead of relying solely on release name

Fixed: Show a warning in Queue when drone is unable to import due to a name mismatch
Fixed: Better UI messages for Queue when there is an error or warning
This commit is contained in:
Mark McDowall
2014-09-13 16:13:00 -07:00
parent 3f11fcf2e1
commit caa6a3858b
26 changed files with 292 additions and 149 deletions

View File

@@ -28,33 +28,30 @@ namespace NzbDrone.Core.Queue
return MapQueue(queueItems);
}
private List<Queue> MapQueue(IEnumerable<TrackedDownload> queueItems)
private List<Queue> MapQueue(IEnumerable<TrackedDownload> trackedDownloads)
{
var queued = new List<Queue>();
foreach (var queueItem in queueItems)
foreach (var trackedDownload in trackedDownloads)
{
foreach (var episode in queueItem.DownloadItem.RemoteEpisode.Episodes)
foreach (var episode in trackedDownload.RemoteEpisode.Episodes)
{
var queue = new Queue
{
Id = episode.Id ^ (queueItem.DownloadItem.DownloadClientId.GetHashCode().GetHashCode() << 16),
Series = queueItem.DownloadItem.RemoteEpisode.Series,
Id = episode.Id ^ (trackedDownload.DownloadItem.DownloadClientId.GetHashCode().GetHashCode() << 16),
Series = trackedDownload.RemoteEpisode.Series,
Episode = episode,
Quality = queueItem.DownloadItem.RemoteEpisode.ParsedEpisodeInfo.Quality,
Title = queueItem.DownloadItem.Title,
Size = queueItem.DownloadItem.TotalSize,
Sizeleft = queueItem.DownloadItem.RemainingSize,
Timeleft = queueItem.DownloadItem.RemainingTime,
Status = queueItem.DownloadItem.Status.ToString(),
RemoteEpisode = queueItem.DownloadItem.RemoteEpisode
Quality = trackedDownload.RemoteEpisode.ParsedEpisodeInfo.Quality,
Title = trackedDownload.DownloadItem.Title,
Size = trackedDownload.DownloadItem.TotalSize,
Sizeleft = trackedDownload.DownloadItem.RemainingSize,
Timeleft = trackedDownload.DownloadItem.RemainingTime,
Status = trackedDownload.DownloadItem.Status.ToString(),
RemoteEpisode = trackedDownload.RemoteEpisode,
TrackedDownloadStatus = trackedDownload.Status.ToString(),
StatusMessages = trackedDownload.StatusMessages
};
if (queueItem.HasError)
{
queue.ErrorMessage = queueItem.StatusMessage;
}
if (queue.Timeleft.HasValue)
{
queue.EstimatedCompletionTime = DateTime.UtcNow.Add(queue.Timeleft.Value);