2013-02-12 7 views
0

Прежде всего позвольте мне сказать, что я не спрашиваю «как проверить статус ранее загруженного видео». Мой вопрос заключается в получении статуса видео из ответа на загрузку. Я использую dotnet-клиент, и сразу после завершения загрузки ответ представляет собой объект Google.Apis.Youtube.v3.Data.Video. Этот объект имеет свойство, называемое Status, которое содержит следующие поля: RejectionReason, PrivacyStatus и UploadStatus. Проблема в том, что только значения PrivacyStatus и UploadStatus имеют значения. RejectionReason имеет значение null. Джефф Posnick отметил, что (see whole thread here)Обработка дублированной загрузки видео Youtube с использованием API YouTube API v3 Клиент Dotnet

Там нет никакого способа, чтобы определить, является ли видео дубликата или нет, как часть ответа загрузки, потому что YouTube не знает, является ли видео дубликата, пока она не обрабатывается видео и обработка происходит после завершения загрузки

Это немного странно, потому что, когда я выдаю файл video.list сразу после загрузки, API возвращает статус для загруженного видео. Поэтому, даже если видео не опубликовано, и похоже, что YouTube все еще индексирует/обрабатывает видео, он уже знает статус «только что загруженного видео». Так почему он не может вернуть статус как часть ответа?

Важно, чтобы ответ включал статус, потому что если нет, то в коде нам нужно делать два вызова API каждый раз, когда мы делаем загрузку: (1) insertmediaupload then (2) video.list. Это было бы очень дорогостоящей операцией, особенно, что не все закачки будут дублироваться.

EDIT В ответ на комментарий Jeff-Posnick в ниже вопрос «может API подождать несколько секунд и проверить, если обработка выполняется, а затем включить статус как часть ответа?».

Я придумал этот вопрос из-за поведения, которое я видел: That's a bit strange because when I issue a video.list right after the upload the API returns a status for the uploaded video. Но я играл с API и получил непоследовательные результаты. Я загружал одно и то же видео снова и снова, и иногда есть «дублированный» статус, а иногда нет. Пожалуйста, обратите внимание на шаги, которые я предпринял, № 1 и № 2 выше. Между этими двумя вызовами API нет других кодов.

ответ

0

Я не уверен, в чем вопрос.

Вы, кажется, понимаете ограничения способа загрузки с помощью API YouTube, и эти ограничения по-прежнему применяются к v3 API данных YouTube. В то время, когда ответ возвращается из запроса videos.insert(), статус видео неизвестен, так как он еще не обработан. Фактическая обработка может произойти через секунду или два после загрузки видео или может произойти несколько минут (или дольше) после загрузки видео, особенно для больших видеофайлов. Это не делается в режиме реального времени, и небезосновательно ожидать, что вызов API видео.insert() блокируется, ожидая завершения обработки.

Я бы не согласился с вашей оценкой, что выполнение videos.list(id=...,part=status) - «очень дорогостоящая операция». Объем пропускной способности и квота API YouTube, которая потребляет, минимальна по сравнению с фактической загрузкой видео. Было бы неплохо предоставить способ передачи статуса обработки независимо от вызова videos.insert() через какой-то механизм обратного вызова или push-обновления, но в настоящее время у нас нет ничего подобного. Вы должны опросить videos.list(id=...,part=status).

+0

Я отредактировал мое сообщение. Я бы согласился с тем, что лучше всего использовать механизм обратного вызова.Кроме того, я начал использовать метод опроса для проблемы, которую я имею, это единственное решение, которое мы можем получить в соответствии с v3 API. –

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