public static async Task <Stream> GetVideoAsync(this VideoFlv video, string nico_id, CookieContainer cookieContainer) { string nicohistory = ""; using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpClient(handler)) { //ユーザーエージェントを追加しないと突然接続が落とされることがある client.DefaultRequestHeaders.UserAgent.ParseAdd(ua); Uri video_uri = new Uri(string.Format("http://www.nicovideo.jp/watch/{0}", nico_id)); await client.GetAsync(video_uri); nicohistory = handler.CookieContainer.GetCookies(video_uri)["nicohistory"].Value; } cookieContainer.Add(new System.Net.Cookie("nicohistory", nicohistory, "/", "nicovideo.jp")); var reqLog = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(video.Url); reqLog.CookieContainer = cookieContainer; //ユーザーエージェントを追加しないと突然接続が落とされることがある reqLog.UserAgent = ua; var resLog = reqLog.GetResponse(); return(resLog.GetResponseStream()); }
public async Task <VideoFlv> GetVideoFlvAsync(string videoId, string device = "metro", int eco = 5) { var result = await _webManager.GetData(new Uri(string.Format(EndPoints.VideoFlv, device, eco, videoId))); var querystring = HttpUtility.ParseQueryString(result.ResultXml); var videoFlv = new VideoFlv(); foreach (var item in querystring) { switch (item.Key) { case "thread_id": videoFlv.Id = Convert.ToUInt32(item.Value); break; case "l": videoFlv.L = Convert.ToInt32(item.Value); break; case "url": videoFlv.Url = item.Value; break; case "ms": videoFlv.Ms = item.Value; videoFlv.ApiChannel = ApiChannelParser(item.Value); break; case "ms_sub": videoFlv.MsSub = item.Value; break; case "is_premium": videoFlv.IsPremium = Convert.ToByte(item.Value); break; case "nickname": videoFlv.Nickname = item.Value; break; case "time": videoFlv.Time = Convert.ToInt64(item.Value); break; case "done": videoFlv.Done = Boolean.Parse(item.Value); break; case "ng_rv": videoFlv.NgRv = Convert.ToByte(item.Value); break; case "hms": videoFlv.Hms = item.Value; break; case "hmsp": videoFlv.Hmsp = Convert.ToInt32(item.Value); break; case "hmstk": videoFlv.Hmstk = item.Value; break; } } return(videoFlv); }