private async Task <DownloaderInput> ResolveDownloadUrl() { //resolve url extractor based on the URL hostname var extractor = ResolveExtractor(); if (extractor != null) { //Extract the video urls and their metadata var videoInfo = await extractor.GetDownloadUrlsAsync(SourceUrl); pnlUrlResolution.Visible = false; //Ask for the quality of the video to be downloaded VideoQualitySelector qualitySelector = new VideoQualitySelector(); qualitySelector.Text = videoInfo.Title; qualitySelector.QualityLabels = videoInfo.DownloadUrls.Select(x => x.Quality).ToList(); qualitySelector.ShowDialog(); if (qualitySelector.DialogResult == DialogResult.OK) { //return the video url return(new DownloaderInput() { Url = videoInfo.DownloadUrls.Where(x => x.Quality == qualitySelector.SelectedQuality).First().Url, FileName = videoInfo.Title + qualitySelector.SelectedQuality + ".mp4", CookieContainer = videoInfo.AuthCookieContainer }); } } return(null); }
public FormatSelector(VideoQualitySelector videoQualitySelector, FrameRateSelector frameRateSelector) : this(videoQualitySelector.Quality, videoQualitySelector.IsPreferred, videoQualitySelector.IsFallback, frameRateSelector.FrameRate, frameRateSelector.IsPreferred, frameRateSelector.IsFallback) { }