/// <summary>
        /// Downloads the trailer.
        /// </summary>
        /// <param name="trailer">The trailer.</param>
        /// <param name="trailerFolder">The trailer folder.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task.</returns>
        private async Task DownloadTrailer(TrailerInfo trailer, Folder trailerFolder, CancellationToken cancellationToken)
        {
            var video = trailer.Video;

            var existing = trailerFolder
                .Children
                .OfType<Trailer>()
                .FirstOrDefault(i => string.Equals(i.Path, trailer.TrailerUrl, StringComparison.OrdinalIgnoreCase));

            if (existing != null)
            {
                video = existing;
            }
            else
            {
                video.Path = trailer.TrailerUrl;

                await trailerFolder.AddChild(video, cancellationToken).ConfigureAwait(false);
            }

            // Figure out which image we're going to download
            var imageUrl = trailer.HdImageUrl ?? trailer.ImageUrl;

            if (!video.HasImage(ImageType.Primary) && !string.IsNullOrEmpty(imageUrl))
            {
                await ProviderManager.SaveImage(video, imageUrl, Plugin.Instance.AppleTrailers, ImageType.Primary, null, cancellationToken).ConfigureAwait(false);

                await LibraryManager.UpdateItem(video, ItemUpdateType.ImageUpdate, cancellationToken).ConfigureAwait(false);
            }
        }