Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
 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));
 }