YouTube API v3 Проверка статуса обработки видео

Как после загрузки видео проверить статус его обработки с помощью C# .NET API? Ответ должен быть в Google.Apis.Youtube.v3.Data.VideoProcessingDetails, но как именно должен быть создан экземпляр этого объекта? Следующий код создает исключение System.Net.Http.HttpRequestException:

video.ProcessingDetails = new VideoProcessingDetails();

Приведенный выше код используется в следующем контексте:

 UserCredential credential;
 using (FileStream stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
 {
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
                new[] { YouTubeService.Scope.Youtube, YouTubeService.Scope.YoutubeUpload },
                "user",
                CancellationToken.None,
                new FileDataStore("YouTube.Auth.Store")).Result;
 }
 var youtubeService = new YouTubeService(new BaseClientService.Initializer()
 {
        HttpClientInitializer = credential,
        ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
  });

  var video = new Video();
  video.Snippet = new VideoSnippet();
  video.Snippet.Title = Title;
  video.Snippet.Description = Description;
  video.Snippet.Tags = Tags;
  video.ProcessingDetails = new VideoProcessingDetails(); // Here it throws an exception
  video.Snippet.CategoryId = CategotyId;
  video.Status = new VideoStatus();
  video.Status.PrivacyStatus = PrivacyStatus;
  var filePath = FilePath;

Идея заключается в том, что после того, как видео загружено, проверьте в цикле, обрабатывается ли видео, и выполните другие операции с ним после завершения обработки.

ОБНОВЛЕНИЕ: я выяснил, что если объект создается после загрузки видео (например, в методе private static void videosInsertRequest_ResponseReceived()), исключение исчезает, но как только я пытаюсь получить доступ к видео .ProcessingDetails.ProcessingProgress.TimeLeftMs.Value говорит, что это значение равно null.

Спасибо.


person iluxonchik    schedule 12.07.2014    source источник


Ответы (1)


В моей собственной работе я обнаружил, что когда ProcessingDetails.ProcessingStatus равно "прекращено", все остальные свойства в ProcessingDetails равны нулю (т. е. null). Я считаю, что это означает, что YouTube закончил обработку видео.

Обычно я проверяю свойство Google API версии 3, чтобы убедиться, что оно равно null, прежде чем пытаться его использовать.

person Mike Meinz    schedule 29.10.2014