private void VideoDownloader_DownloadProgressChanged(object sender, ProgressEventArgs e) { CustomVideoDownloader video = (CustomVideoDownloader)sender; var a = DownloadItems.FirstOrDefault(i => i.Id == video.DownloadItem.Id); a.DownloadedPercent = e.ProgressPercentage; }
async void StartDownload() { int count = 1; foreach (var item in DownloadItems) { try { IEnumerable <VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(item.Url, false); VideoInfo video = videoInfos.FirstOrDefault(info => info.VideoType == VideoType.Mp4 && info.Resolution == 720); if (video == null) { video = videoInfos.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360); } if (video.RequiresDecryption) { DownloadUrlResolver.DecryptDownloadUrl(video); } DirectoryInfo target = new DirectoryInfo( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\YoutubeDownloader"); if (!target.Exists) { target.Create(); } var videoDownloader = new CustomVideoDownloader(item, video, Path.Combine( target.FullName, $"{item.Order}_{RemoveIllegalPathCharacters(video.Title)}{video.VideoExtension}") ); videoDownloader.DownloadProgressChanged += VideoDownloader_DownloadProgressChanged; videoDownloader.Execute(); } catch (Exception ex) { item.Status = "Error"; item.Comment = ex.Message; } count++; } }