private string DownloadVideoAndReturnPath(VideoSearchComponents video, string outputPath) { var toDownload = DownloadUrlResolver.GetDownloadUrls(video.getUrl()) .OrderBy(x => x.FileSize) .First(x => x.AudioBitrate > 0 && x.FileSize > 0); var dl = new VideoDownloader(); var videoExtension = toDownload.VideoExtension; if (toDownload.RequiresDecryption) { DownloadUrlResolver.DecryptDownloadUrl(toDownload); } var basePath = Path.Combine(outputPath, Path.GetRandomFileName()); var request = (HttpWebRequest)WebRequest.Create(toDownload.DownloadUrl); var response = (HttpWebResponse)request.GetResponse(); var outFilePath = basePath + videoExtension; using (var reader = new StreamReader(response.GetResponseStream())) { var ms = new MemoryStream(); response.GetResponseStream().CopyTo(ms); var outFile = File.Create(outFilePath); ms.WriteTo(outFile); outFile.Close(); } return(outFilePath); }
public static YouTubeSearchResult From(VideoSearchComponents component) { return(new YouTubeSearchResult { Author = component.getAuthor(), Description = component.getDescription(), Duration = component.getDuration(), Thumbnail = component.getThumbnail(), Title = component.getTitle(), Url = component.getUrl(), ViewCount = component.getViewCount(), Type = VideoRequestType.SingleVideo }); }