2014-07-12 4 views
1

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

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; 

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

UPDATE: Я понял, что если объект конкретизируются после того, как видео загружается (т.е. в частном статическом аннулируются videosInsertRequest_ResponseReceived() метода , например), исключение нет, но как только я пытаюсь доступ к видео. ProcessingDetails.ProcessingProgress.TimeLeftMs.Value, он говорит, что это значение равно null.

Спасибо.

ответ

0

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

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