예제 #1
0
        protected string GetMessage(DownloadStationTask task)
        {
            if (task.StatusExtra != null)
            {
                if (task.Status == DownloadStationTaskStatus.Extracting)
                {
                    return($"Extracting: {int.Parse(task.StatusExtra["unzip_progress"])}%");
                }

                if (task.Status == DownloadStationTaskStatus.Error)
                {
                    return(task.StatusExtra["error_detail"]);
                }
            }

            return(null);
        }
예제 #2
0
        protected TimeSpan?GetRemainingTime(DownloadStationTask torrent)
        {
            var  speedString = torrent.Additional.Transfer["speed_download"];
            long downloadSpeed;

            if (speedString.IsNullOrWhiteSpace() || !long.TryParse(speedString, out downloadSpeed))
            {
                _logger.Debug("Torrent {0} has invalid speed_download: {1}", torrent.Title, speedString);
                downloadSpeed = 0;
            }

            if (downloadSpeed <= 0)
            {
                return(null);
            }

            var remainingSize = GetRemainingSize(torrent);

            return(TimeSpan.FromSeconds(remainingSize / downloadSpeed));
        }
예제 #3
0
        protected DownloadItemStatus GetStatus(DownloadStationTask torrent)
        {
            switch (torrent.Status)
            {
            case DownloadStationTaskStatus.Waiting:
                return(torrent.Size == 0 || GetRemainingSize(torrent) > 0 ? DownloadItemStatus.Queued : DownloadItemStatus.Completed);

            case DownloadStationTaskStatus.Paused:
                return(DownloadItemStatus.Paused);

            case DownloadStationTaskStatus.Finished:
            case DownloadStationTaskStatus.Seeding:
                return(DownloadItemStatus.Completed);

            case DownloadStationTaskStatus.Error:
                return(DownloadItemStatus.Failed);
            }

            return(DownloadItemStatus.Downloading);
        }
예제 #4
0
 protected bool IsCompleted(DownloadStationTask torrent)
 {
     return(torrent.Status == DownloadStationTaskStatus.Seeding || IsFinished(torrent) || (torrent.Status == DownloadStationTaskStatus.Waiting && torrent.Size != 0 && GetRemainingSize(torrent) <= 0));
 }
예제 #5
0
 protected bool IsFinished(DownloadStationTask torrent)
 {
     return(torrent.Status == DownloadStationTaskStatus.Finished);
 }
예제 #6
0
 protected bool IsFinished(DownloadStationTask task)
 {
     return(task.Status == DownloadStationTaskStatus.Finished);
 }