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);
        }