public async Task DownloadBackgroundImageAsync(MovieFull movie, CancellationTokenSource ct)
{
var watch = Stopwatch.StartNew();
try
{
await Task.Run(async () =>
{
TmdbClient.GetConfig();
var tmdbMovie = await TmdbClient.GetMovieAsync(movie.ImdbCode, MovieMethods.Images);
var remotePath = new List<string>
{
TmdbClient.GetImageUrl(Constants.BackgroundImageSizeTmDb,
tmdbMovie.BackdropPath).AbsoluteUri
};
await
remotePath.ForEachAsync(
background =>
DownloadFileHelper.DownloadFileTaskAsync(background,
Constants.BackgroundMovieDirectory + movie.ImdbCode + Constants.ImageFileExtension,
ct: ct),
(background, t) =>
{
if (t.Item3 == null && !string.IsNullOrEmpty(t.Item2))
movie.BackgroundImagePath = t.Item2;
});
}, ct.Token);
}
catch (Exception exception) when (exception is TaskCanceledException)
{
Logger.Debug(
"DownloadBackgroundImageAsync cancelled.");
}
catch (Exception exception)
{
Logger.Error(
$"DownloadBackgroundImageAsync: {exception.Message}");
throw;
}
finally
{
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
Logger.Debug(
$"DownloadBackgroundImageAsync ({movie.ImdbCode}) in {elapsedMs} milliseconds.");
}
}