private bool DownloadMovies() {
using (var bitsManager = new BitsManager()) {
bitsManager.OnInterfaceError += (sender, args) => _logger.Error("BITS error: {0}\n{1}", args.Message, args.Description);
if (CheckRunningJob(bitsManager)) {
return false;
}
var moviesToDownload = _movies
.Where(m => string.IsNullOrEmpty(m.LocalPath) || !File.Exists(m.LocalPath))
.Take(200)
.ToList();
if (moviesToDownload.Any()) {
var job = bitsManager.CreateJob("AerialForWindows", JobType.Download);
job.Priority = JobPriority.Low;
job.MinimumRetryDelay = 5 * 60; // 5 minutes
job.NoProgressTimeout = 30 * 60; // 30 minutes
foreach (var movie in moviesToDownload) {
var localPath = GetLocalPathForMovie(movie);
movie.LocalPath = localPath;
job.AddFile(movie.DownloadUrl, localPath);
}
job.Resume();
Settings.Instance.BitsJobId = job.JobId;
Settings.Instance.Save();
_logger.Debug($"Startet download of {moviesToDownload.Count} files");
return true;
}
return false;
}
}