public static async Task <VideoDetail> PostVideo(VideoSummary videoPost) { using (var client = new HttpClient()) { VideoDetail video = null; client.BaseAddress = new Uri(baseAddress); client.DefaultRequestHeaders.Add("X-api-username", userName); client.DefaultRequestHeaders.Add("X-api-key", apiKey); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.PostAsJsonAsync("videos/", videoPost); if (response.IsSuccessStatusCode) { video = await response.Content.ReadAsAsync <VideoDetail>(); Console.WriteLine("Post Video Success: " + video); } else { Console.WriteLine("Post Video failure: " + response.StatusCode); } return(video); } }
public SubtitleInfo PostVideo(VideoJob vj) { VideoSummary vs = new VideoSummary() { VideoUrl = vj.VideoUrl//"http://www.youtube.com/watch?v=cJs7obmEABE"//"https://www.youtube.com/watch?v=RdKAVE0frIM&ab_channel=BBC" }; SubtitleInfo si = vcc.RequestVideoSubtitle(vs, vj.SubtitleLangauge, vj.SubtitleFormat); //switch (si.Status) //{ // case VideoSubtitleStatus.Complete: // break; // case VideoSubtitleStatus.SubtitleRequested: // //Console.WriteLine("Video exists, but subtitle does not, request for subtitle is made."); // break; // case VideoSubtitleStatus.Error: // //Console.WriteLine("Error happened!"); // break; // case VideoSubtitleStatus.Exists: // byte[] res = vcc.GetVideoSubtitle(si.VideoId, vj.SubtitleLangauge, vj.SubtitleFormat).SubtitleData; // //Console.WriteLine("Result: " + Encoding.Default.GetString(res)); // break; // case VideoSubtitleStatus.NotComplete: break; // case VideoSubtitleStatus.Submitted: // //Console.WriteLine("Video with id {1} has been submitted for manual subtitling. You'll get notified when it's ready by pigeon!", si.VideoId); // break; // default: break; //} return si; }
public SubtitleInfo RequestVideoSubtitle(VideoSummary videoSummary, string requestedLanguageCode, string outputFormat) { try { //step 1) check if subtitle already exists for the request => if yes => return subtitle List <VideoDetail> videoDetailList = AmaraApiController.ListVideosWithFilter("video_url", videoSummary.VideoUrl).Result; if (videoDetailList.Count > 0) { VideoDetail resultVD = videoDetailList[0]; //check if video contains requested language Language resultLanguage = (from vdl in resultVD.Languages where vdl.Code == requestedLanguageCode select vdl).FirstOrDefault(); //check information from resourceUri and then download from subtitle uri if (resultLanguage != null) { var resourceUri = resultLanguage.VideoLanguageUri; if (resourceUri != null) { //get resurceUri info VideoLanguageDetail vLangDetail = AmaraApiController.GetLanguageDetails(resourceUri).Result; //check if it is completed, then if it is a translation, if it fits continue var subUri = resultLanguage.SubtitleUri; if (subUri != null && vLangDetail.AreSubsComplete && vLangDetail.SubtitleCount > 0) { //all is validated return the subtitle in the desired format return(new SubtitleInfo(resultVD.Id, VideoSubtitleStatus.Exists));//GetVideoSubtitle(resultVD.Id, requestedLanguageCode, outputFormat).SubtitleData; } else { return(new SubtitleInfo(resultVD.Id, VideoSubtitleStatus.NotComplete)); } } } else { //submit request for translation to non-existent language VideoLanguageDetail vLangDetail = AmaraApiController.PostNewSubtitleRequest(resultVD.Id, requestedLanguageCode).Result; return(new SubtitleInfo(resultVD.Id, VideoSubtitleStatus.SubtitleRequested)); } } else { //step 2) else => submit request to subtitle video towards amara (optional use tweeter/facebook to notify community of a subtitle request) VideoDetail videoDetail = AmaraApiController.PostVideo(videoSummary).Result; //step 3) return videoId and video information relevant to later check for a completed subtitle return(new SubtitleInfo(videoDetail.Id, VideoSubtitleStatus.Submitted)); } } catch { return(new SubtitleInfo(null, VideoSubtitleStatus.Error)); } return(new SubtitleInfo(null, VideoSubtitleStatus.Error)); }
public static async Task<VideoDetail> PostVideo(VideoSummary videoPost) { using (var client = new HttpClient()) { VideoDetail video = null; client.BaseAddress = new Uri(baseAddress); client.DefaultRequestHeaders.Add("X-api-username", userName); client.DefaultRequestHeaders.Add("X-api-key", apiKey); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.PostAsJsonAsync("videos/", videoPost); if (response.IsSuccessStatusCode) { video = await response.Content.ReadAsAsync<VideoDetail>(); Console.WriteLine("Post Video Success: " + video); } else Console.WriteLine("Post Video failure: " + response.StatusCode); return video; } }