public IUrlInfo GetInfo(string url) { if (url == null) { throw new ArgumentNullException(nameof(url)); } url = url.Trim(); if (!new Regex(YoutuberRegexp).Match(url).Success) { throw new Exception("Link is not valid for youtube video"); } url = UrlFormatter.RemoveParametersFromUrl(url); IEnumerable <VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls(url); VideoInfo videoInfo = videoInfos.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360); Headers headers = HttpRequester.GetHeaders(videoInfo.DownloadUrl); var artistAndSong = GetArtistAndSongName(videoInfo.Title); return(new UrlInfo() { Artist = artistAndSong.Artist, Song = artistAndSong.Song, ContentLength = headers.ContentLenght, VideoId = UrlFormatter.GetYoutubeVideoIdentifier(url), }); }