2016-04-13 2 views
1

У меня возникли проблемы с API YouTube, используя метод ResumeAsync().YouTube V3 API C# - ResumeAsync() Операция отменена

Вот мой код ...

 YouTubeService youtube = await AuthService.AuthenticateYouTubeAsync(auth); 
     ResumableUpload<Video, Video> vidUploadReq = null; 

     var video = new Video(); 
     video.Snippet = new VideoSnippet(); 
     video.Snippet.Title = videoToUpload.Title; 
     video.Snippet.Description = videoToUpload.Description; 
     video.Snippet.Tags = videoToUpload.Tags; 
     video.Snippet.CategoryId = videoToUpload.CategoryID; 
     video.Status = new VideoStatus(); 
     video.Status.PrivacyStatus = videoToUpload.PrivacyStatus; 
     var filePath = videoToUpload.LocalFilePath; 

     // Get chunk size and make sure it's valid 
     int chunkSizeBytes = defaultChunkSizeKB * 1024; 

     using (var fileStream = new FileStream(filePath, FileMode.Open)) 
     { 
      vidUploadReq = youtube.Videos.Insert(video, "snippet,status", fileStream, "video/*"); 
      vidUploadReq.ProgressChanged += videoUploadRequest_ProgressChanged; 
      vidUploadReq.ResponseReceived += videoUploadRequest_ResponseReceived; 
      vidUploadReq.ChunkSize = chunkSizeBytes; 

      await vidUploadReq.UploadAsync(token); 
     } 

Где возобновление вписывается в это?

Я ожидал, что сериализует объект ResumableUpload, когда я перезапущу приложение?

Похоже, мне нужно сохранить UploadUri в следующий раз, и в следующий раз установите эти свойства UploadUri и StreamLength. Тем не менее, оба этих поля являются ЧАСТНЫМИ в API.

Есть ли лучший способ, кроме использования отражения, чтобы установить эти частные свойства?

+0

Проверьте этот вопрос SO [21321878] (http://stackoverflow.com/questions/21321878/youtube-c-sharp-api-v3-how-do-you-resume-an-interrupted-upload), если он может помогите вам :) – KENdi

+0

Да, я видел эту тему, прежде чем отправил. Однако он не отвечает на мой вопрос. Мой вопрос в значительной степени «Есть ли лучший способ, кроме использования отражения, чтобы установить эти частные свойства?» ... Ваша ссылка дает пример, где отражается работа. Это НЕ хороший способ решить эту проблему. Он побеждает цель скрытия информации о программировании O-O. Вы видите сейчас? – Ginko

+0

Ссылка «обходит» проблему, не скрывает ли это, что это проблема. – Ginko

ответ

1

В версии 1.14, то Google API v3 .NET Клиентская библиотека содержит возможность сохранить UploadUri во время ResumableUpload сессии и впоследствии использовать его UploadUri возобновить загрузку в случае программы перезапуск.

Есть два примера ResumableUpload в https://github.com/google/google-api-dotnet-client-samples, которые демонстрируют использование .ResumeAsync с дополнительным параметром ранее сохраненного UploadUri. A Событие UploadSessionData, вызываемое в начале загрузки, предоставляет программе загрузки UploadUri, чтобы она могла сохранить ее в постоянном хранилище для извлечения при перезапуске программы.

Смежные вопросы