private static IEnumerable <VideoInfo> GetVideoInfos(IEnumerable <DownloadUrlResolver.ExtractionInfo> extractionInfos, string videoTitle) { List <VideoInfo> list = new List <VideoInfo>(); using (IEnumerator <DownloadUrlResolver.ExtractionInfo> enumerator = extractionInfos.GetEnumerator()) { while (enumerator.MoveNext()) { DownloadUrlResolver.ExtractionInfo current = enumerator.Current; string text = HttpHelper.ParseQueryString(current.Uri.Query)["itag"]; int formatCode = int.Parse(text); VideoInfo videoInfo2 = Enumerable.SingleOrDefault <VideoInfo>(VideoInfo.Defaults, (VideoInfo videoInfo) => videoInfo.FormatCode == formatCode); if (videoInfo2 != null) { videoInfo2 = new VideoInfo(videoInfo2) { DownloadUrl = current.Uri.ToString(), Title = videoTitle, RequiresDecryption = current.RequiresDecryption }; } else { videoInfo2 = new VideoInfo(formatCode) { DownloadUrl = current.Uri.ToString() }; } list.Add(videoInfo2); } } return(list); }
private static IEnumerable <DownloadUrlResolver.ExtractionInfo> ExtractDownloadUrls(JObject json) { string[] strArray = (string[])Enumerable.ToArray <string>(Enumerable.Concat <string>(((string)DownloadUrlResolver.GetStreamMap(json)).Split((char[])new char[1] { ',' }), ((string)DownloadUrlResolver.GetAdaptiveStreamMap(json)).Split((char[])new char[1] { ',' }))); for (int index = 0; index < strArray.Length; ++index) { IDictionary <string, string> queryString = HttpHelper.ParseQueryString(strArray[index]); bool flag = false; string url; if (queryString.ContainsKey("s") || queryString.ContainsKey("sig")) { flag = queryString.ContainsKey("s"); string str = queryString.ContainsKey("s") ? queryString["s"] : queryString["sig"]; url = string.Concat(string.Format("{0}&{1}={2}", queryString["url"], "signature", str), queryString.ContainsKey("fallback_host") ? string.Concat("&fallback_host=", queryString["fallback_host"]) : string.Empty); } else { url = queryString["url"]; } string str1 = HttpHelper.UrlDecode(HttpHelper.UrlDecode(url)); if (!HttpHelper.ParseQueryString(str1).ContainsKey("ratebypass")) { str1 = string.Concat(str1, string.Format("&{0}={1}", "ratebypass", "yes")); } DownloadUrlResolver.ExtractionInfo extractionInfo = new DownloadUrlResolver.ExtractionInfo(); extractionInfo.RequiresDecryption = flag; Uri uri = new Uri(str1); extractionInfo.Uri = uri; yield return(extractionInfo); } strArray = (string[])null; }