contentUrl отсутствует для видео вложений

Я попытался поделиться видео с моим приложением. Он получил уведомление, но для загрузки видео нет contentUrl. Вот поле вложения в уведомлении:

attachments: [{contentType: 'video/mp4', 'id': 'ps:5870152408634447570'}]

Поле isProcessingContent также отсутствует. Он попытался подождать некоторое время (возможно, видео все равно обрабатывается), но это ничего не изменило.

https://developers.google.com/glass/v1/reference/timeline/attachments

Есть ли способ получить доступ к видеофайлу?


person avh    schedule 23.04.2013    source источник
comment
Вы пытались получить доступ к вложению напрямую (attachments.get) с идентификатором, чтобы увидеть, включен ли там contentUrl в ответ? developers.google.com/glass/v1/reference/timeline/attachments/   -  person Scarygami    schedule 24.04.2013


Ответы (1)


contentUrl вложения не указаны в метаданных TimelineItem, вам необходимо отправить авторизованный запрос на конечную точку mirror.timeline.attachments.get, чтобы получить дополнительную информацию о вложении:

from apiclient import errors
# ...

def print_attachment_metadata(service, item_id, attachment_id):
  """Print an attachment's metadata

  Args:
    service: Authorized Mirror service.
    item_id: ID of the timeline item the attachment belongs to.
    attachment_id: ID of the attachment to print metadata for.
  """
  try:
    attachment = service.timeline().attachments().get(
        itemId=item_id, attachmentId=attachment_id).execute()
    print 'Attachment content type: %s' % attachment['contentType']
    print 'Attachment content URL: %s' % attachment['contentUrl']
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

Как только вы получите метаданные вложения, проверьте свойство isProcessingContent: оно должно быть установлено на False, чтобы получить contentUrl. К сожалению, отсутствуют push-уведомления об изменении значения свойства, и вашей службе придется проводить опрос с использованием экспоненциальной отсрочки, чтобы сохранить квоту и ресурсы.

Из метаданных вложения, когда contentUrl доступен, вы можете получить содержимое вложения следующим образом:

def download_attachment(service, attachment):
  """Download an attachment's content

  Args:
    service: Authorized Mirror service.
    attachment: Attachment's metadata.
  Returns:
    Attachment's content if successful, None otherwise.
  """
  resp, content = service._http.request(attachment['contentUrl'])
  if resp.status == 200:
    return content
  else:
    print 'An error occurred: %s' % resp
    return None
person Alain    schedule 24.04.2013