private Session<Response<Tag[]>> EditTag(Tag EditTag, string cmd) { var session = new Session<Response<Tag[]>>(); var accessorList = new List<Func<byte[], APIs.IAccesser>>(); if (!htmlCache.IsAvailab) { accessorList.Add(new Func<byte[], APIs.IAccesser>((byte[] data) => { var accesser = new APIs.video_page_html.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; })); } accessorList.Add(new Func<byte[], APIs.IAccesser>((byte[] data) => { if (data != null) htmlCache.Value = new APIs.video_page_html.Parser().Parse(data); if (token == "") token = new APIs.video_page_html.csrf_token().Parse(htmlCache); if (watch_auth_key == "") watch_auth_key = new APIs.video_page_html.watch_auth_key().Parse(htmlCache); var accesser = new APIs.tag_edit.UploadAccesser(); accesser.Setting( context.CookieContainer, target.ID, "json", cmd, EditTag.Name, token, watch_auth_key, (EditTag.IsLock == true) ? "1" : "0"); return accesser; })); session.SetAccessers( accessorList.ToArray(), (data) => Converter.TagsResponse(new APIs.tag_edit.Parser().Parse(data))); return session; }
/// <summary> /// 動画の詳細情報を取得する /// </summary> public Session<Response<VideoInfo>> DownloadVideoInfo(DownloadVideoInfoUseAPI DownloadVideoInfoUseAPI) { var session = new Session<Response<VideoInfo>>(); switch (DownloadVideoInfoUseAPI) { case DownloadVideoInfoUseAPI.html: #region var accessorList = new List<Func<byte[], APIs.IAccesser>>(); if (!htmlCache.IsAvailab) { accessorList.Add((data) => { var accesser = new APIs.video_page_html.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; }); } session.SetAccessers( accessorList.ToArray(), (data) => { if (data != null) htmlCache.Value = new APIs.video_page_html.Parser().Parse(data); var result = new Response<VideoInfo>(); result.Status = Status.OK; result.Result = context.IDContainer.GetVideoInfo(target.ID); result.Result.Description = new APIs.video_page_html.html_video_info().Parse(htmlCache); return result; }); #endregion break; case DownloadVideoInfoUseAPI.getthumbinfo: #region session.SetAccessers(new Func<byte[], APIs.IAccesser>[] { (data) => { var accesser = new APIs.getthumbinfo.Accesser(); accesser.Setting( context.CookieContainer, target.ID); return accesser; } }, (data) => Converter.VideoInfoResponse(context, new APIs.getthumbinfo.Parser().Parse(data))); #endregion break; default: throw new Exception(); } 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; }