Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }