public static async Task <VideoLanguageDetail> GetLanguageDetails(string resourceUrl) { try { using (var client = new HttpClient()) { VideoLanguageDetail vLangDetail = 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.GetAsync(resourceUrl); if (response.IsSuccessStatusCode) { vLangDetail = await response.Content.ReadAsAsync <VideoLanguageDetail>(); Console.WriteLine("Subtitle detail: " + vLangDetail); } else { Console.WriteLine("Failed " + response.StatusCode); } return(vLangDetail); } } catch (Exception e) { Console.WriteLine("GetLanguageDetails failure: " + e); return(null); } }
public static async Task <VideoLanguageDetail> PostNewSubtitleRequest2(string videoId, string languageCode) { using (var client = new HttpClient()) { VideoLanguageDetail vld = 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/" + videoId + "/languages/" + languageCode + "/subtitles/", ""); if (response.IsSuccessStatusCode) { vld = await response.Content.ReadAsAsync <VideoLanguageDetail>(); Console.WriteLine("Post Video Success: " + vld); } else { Console.WriteLine("Post Video failure: " + response.StatusCode); } return(vld); } }
public static async Task <VideoLanguageDetail> GetLanguageDetails(string resourceUrl) { try { using (var client = new HttpClient()) { VideoLanguageDetail vLangDetail = new VideoLanguageDetail(); client.DefaultRequestHeaders.Add("X-api-username", userName); client.DefaultRequestHeaders.Add("X-api-key", apiKey); client.GetAsync(resourceUrl).ContinueWith((taskwithresponse) => { var response = taskwithresponse.Result; var jsonString = response.Content.ReadAsStringAsync(); jsonString.Wait(); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString.Result)); DataContractJsonSerializer ser = new DataContractJsonSerializer(vLangDetail.GetType()); vLangDetail = ser.ReadObject(ms) as VideoLanguageDetail; ms.Close(); }).Wait(); return(vLangDetail); } } catch (Exception e) { Console.WriteLine("GetLanguageDetails failure: " + e); return(null); } }
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)); }