/// <summary> /// コメントをアップロードする /// </summary> /// <param name="Comment">投稿するコメント</param> public Session<Response> UploadComment(Comment Comment) { var session = new Session<Response>(); var accessorList = new List<Func<byte[], APIs.IAccesser>>(); if (!videoCache.IsAvailab) accessorList.Add((data) => { var accesser = new APIs.getflv.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; }); if (postkey == "") accessorList.Add((data) => { if (data != null) videoCache.Value = new APIs.getflv.Parser().Parse(data); var accesser = new APIs.getpostkey.Accesser(); accesser.Setting( context.CookieContainer, block_no, videoCache.Value["thread_id"]); return accesser; }); accessorList.Add((data) => { if (postkey == "") postkey = new APIs.getpostkey.Parser().Parse(data); var accesser = new APIs.upload_comment.Accesser(); accesser.Setting( context.CookieContainer, videoCache.Value["ms"], videoCache.Value["thread_id"], ((int)(Comment.PlayTime.TotalMilliseconds / 10)).ToString(), Comment.Command, ticket, videoCache.Value["user_id"], postkey, Comment.Body); return accesser; }); session.SetAccessers( accessorList.ToArray(), (data) => Converter.Response(new APIs.upload_comment.Parser().Parse(data))); return session; }
/// <summary> /// コメントをダウンロードする /// </summary> public Session<Response<Comment[]>> DownloadComment() { var session = new Session<Response<Comment[]>>(); var accessorList = new List<Func<byte[], APIs.IAccesser>>(); if (!videoCache.IsAvailab) { accessorList.Add((data) => { var accesser = new APIs.getflv.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; }); } accessorList.AddRange(new Func<byte[], APIs.IAccesser>[] { (data) => { if (data != null) videoCache.Value = new APIs.getflv.Parser().Parse(data); var accesser = new APIs.download_comment.Accesser(); accesser.Setting( context.CookieContainer, videoCache.Value["ms"], videoCache.Value["thread_id"]); return accesser; }, }); session.SetAccessers( accessorList.ToArray(), (data) => { var Serial = new APIs.download_comment.Parser().Parse(data); ticket = Serial.thread[0].ticket; block_no = ((Serial.thread[0].last_res + 1) / 100).ToString(); return Converter.CommentResponse(Serial); }); return session; }
/// <summary> /// 動画をダウンロードする /// </summary> public Session<WebResponse> DownloadVideo() { var session = new Session<WebResponse>(); var accessorList = new List<Func<byte[], APIs.IAccesser>>(); var isVideoCacheProgress = false; var isHtmlCacheProgress = false; if (!videoCache.IsAvailab) { isVideoCacheProgress = true; accessorList.Add((data) => { var accesser = new APIs.getflv.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; }); } if (!htmlCache.IsAvailab) { isHtmlCacheProgress = true; accessorList.Add( (data) => { if (data != null) videoCache.Value = new APIs.getflv.Parser().Parse(data); var accesser = new APIs.video_page_html.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; }); } accessorList.Add( (data) => { if (data != null) if (isHtmlCacheProgress) htmlCache.Value = new APIs.video_page_html.Parser().Parse(data); else if (isVideoCacheProgress) videoCache.Value = new APIs.getflv.Parser().Parse(data); var accesser = new APIs.getvideo.Accesser(); accesser.Setting( context.CookieContainer, videoCache.Value["url"]); return accesser; }); session.SetAccessers(accessorList.ToArray(), null); return session; }