private IEnumerable <DownloadClientItem> GetQueue() { var globalStatus = _proxy.GetGlobalStatus(Settings); var queue = _proxy.GetQueue(Settings); var queueItems = new List <DownloadClientItem>(); long totalRemainingSize = 0; foreach (var item in queue) { var totalSize = MakeInt64(item.FileSizeHi, item.FileSizeLo); var pausedSize = MakeInt64(item.PausedSizeHi, item.PausedSizeLo); var remainingSize = MakeInt64(item.RemainingSizeHi, item.RemainingSizeLo); var droneParameter = item.Parameters.SingleOrDefault(p => p.Name == "drone"); var queueItem = new DownloadClientItem(); queueItem.DownloadId = droneParameter == null?item.NzbId.ToString() : droneParameter.Value.ToString(); queueItem.Title = item.NzbName; queueItem.TotalSize = totalSize; queueItem.Category = item.Category; queueItem.DownloadClientInfo = DownloadClientItemClientInfo.FromDownloadClient(this); queueItem.CanMoveFiles = true; queueItem.CanBeRemoved = true; if (globalStatus.DownloadPaused || (remainingSize == pausedSize && remainingSize != 0)) { queueItem.Status = DownloadItemStatus.Paused; queueItem.RemainingSize = remainingSize; } else { if (item.ActiveDownloads == 0 && remainingSize != 0) { queueItem.Status = DownloadItemStatus.Queued; } else { queueItem.Status = DownloadItemStatus.Downloading; } queueItem.RemainingSize = remainingSize - pausedSize; if (globalStatus.DownloadRate != 0) { queueItem.RemainingTime = TimeSpan.FromSeconds((totalRemainingSize + queueItem.RemainingSize) / globalStatus.DownloadRate); totalRemainingSize += queueItem.RemainingSize; } } queueItems.Add(queueItem); } return(queueItems); }
public override IEnumerable <QueueItem> GetQueue() { List <NzbgetQueueItem> queue; try { queue = _proxy.GetQueue(Settings); } catch (DownloadClientException ex) { _logger.ErrorException(ex.Message, ex); return(Enumerable.Empty <QueueItem>()); } var queueItems = new List <QueueItem>(); foreach (var item in queue) { var droneParameter = item.Parameters.SingleOrDefault(p => p.Name == "drone"); var queueItem = new QueueItem(); queueItem.Id = droneParameter == null?item.NzbId.ToString() : droneParameter.Value.ToString(); queueItem.Title = item.NzbName; queueItem.Size = item.FileSizeMb; queueItem.Sizeleft = item.RemainingSizeMb; queueItem.Status = item.FileSizeMb == item.PausedSizeMb ? "paused" : "queued"; var parsedEpisodeInfo = Parser.Parser.ParseTitle(queueItem.Title); if (parsedEpisodeInfo == null) { continue; } var remoteEpisode = _parsingService.Map(parsedEpisodeInfo, 0); if (remoteEpisode.Series == null) { continue; } queueItem.RemoteEpisode = remoteEpisode; queueItems.Add(queueItem); } return(queueItems); }
private IEnumerable <DownloadClientItem> GetQueue() { NzbgetGlobalStatus globalStatus; List <NzbgetQueueItem> queue; try { globalStatus = _proxy.GetGlobalStatus(Settings); queue = _proxy.GetQueue(Settings); } catch (DownloadClientException ex) { _logger.ErrorException(ex.Message, ex); return(Enumerable.Empty <DownloadClientItem>()); } var queueItems = new List <DownloadClientItem>(); long totalRemainingSize = 0; foreach (var item in queue) { var totalSize = MakeInt64(item.FileSizeHi, item.FileSizeLo); var pausedSize = MakeInt64(item.PausedSizeHi, item.PausedSizeLo); var remainingSize = MakeInt64(item.RemainingSizeHi, item.RemainingSizeLo); var droneParameter = item.Parameters.SingleOrDefault(p => p.Name == "drone"); var queueItem = new DownloadClientItem(); queueItem.DownloadId = droneParameter == null?item.NzbId.ToString() : droneParameter.Value.ToString(); queueItem.Title = item.NzbName; queueItem.TotalSize = totalSize; queueItem.Category = item.Category; queueItem.DownloadClient = Definition.Name; if (globalStatus.DownloadPaused || remainingSize == pausedSize && remainingSize != 0) { queueItem.Status = DownloadItemStatus.Paused; queueItem.RemainingSize = remainingSize; } else { if (item.ActiveDownloads == 0 && remainingSize != 0) { queueItem.Status = DownloadItemStatus.Queued; } else { queueItem.Status = DownloadItemStatus.Downloading; } queueItem.RemainingSize = remainingSize - pausedSize; if (globalStatus.DownloadRate != 0) { queueItem.RemainingTime = TimeSpan.FromSeconds((totalRemainingSize + queueItem.RemainingSize) / globalStatus.DownloadRate); totalRemainingSize += queueItem.RemainingSize; } } queueItems.Add(queueItem); } return(queueItems); }