private void DownloadMp3(LinkInfo link, string downloadDir) { Directory.CreateDirectory(downloadDir); IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link.Link); // Extracting stream with highest quality VideoInfo video = videoInfos.Where(info => info.CanExtractAudio).OrderByDescending(info => info.AudioBitrate).First(); if (video.RequiresDecryption) { DownloadUrlResolver.DecryptDownloadUrl(video); } var audioDownloader = new AudioDownloader(video, Path.Combine(downloadDir, RemoveIllegalPathCharacters(video.Title) + video.AudioExtension)); audioDownloader.DownloadProgressChanged += (sender, argss) => { downloader.ReportProgress((int)argss.ProgressPercentage); }; audioDownloader.DownloadFinished += (sender, argss) => { }; audioDownloader.Execute(); }
private void DownloadMp4(LinkInfo link, string downloadDir) { Directory.CreateDirectory(downloadDir); IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(link.Link); VideoInfo video; switch (link.QualityInfo) { case Quality.Low: video = videoInfos.Where(info => info.Resolution < 480).OrderByDescending(info => info.Resolution).First(); break; case Quality.Medium: video = videoInfos.Where(info => info.Resolution < 720).OrderByDescending(info => info.Resolution).First(); break; case Quality.High: video = videoInfos.Where(info => info.Resolution < 1080).OrderByDescending(info => info.Resolution).First(); break; case Quality.SuperHigh: video = videoInfos.OrderByDescending(info => info.Resolution).First(); break; default: throw new ArgumentOutOfRangeException(); } if (video.RequiresDecryption) { DownloadUrlResolver.DecryptDownloadUrl(video); } var videoDownloader = new VideoDownloader(video, Path.Combine(downloadDir, RemoveIllegalPathCharacters(video.Title) + "-" + video.Resolution + video.VideoExtension)); videoDownloader.DownloadStarted += (sender, argss) => Console.WriteLine("Started downloading " + video.Title + "-" + video.Resolution + video.VideoExtension); videoDownloader.DownloadProgressChanged += (sender, argss) => { downloader.ReportProgress((int)argss.ProgressPercentage); }; videoDownloader.Execute(); }
/* * Downloads the link to the dir */ private void Download(LinkInfo info, string dir) { switch (info.DownloadType) { case Type.Mp3: DownloadMp3(info, dir); break; case Type.Mp4: DownloadMp4(info, dir); break; case Type.None: break; default: break; } }