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);
        }
예제 #2
0
 public FormatSelector(VideoQualitySelector videoQualitySelector, FrameRateSelector frameRateSelector) : this(videoQualitySelector.Quality, videoQualitySelector.IsPreferred, videoQualitySelector.IsFallback, frameRateSelector.FrameRate, frameRateSelector.IsPreferred, frameRateSelector.IsFallback)
 {
 }