2013-04-23 1 views
3

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

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

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

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

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

+1

Вы пробовали получить доступ к вложению непосредственно (attachments.get) с идентификатором, чтобы увидеть, если contentUrl включен в ответ там? https://developers.google.com/glass/v1/reference/timeline/attachments/get – Scarygami

ответ

3

вложенный 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: для извлечения contentUrl его необходимо установить на False. К сожалению, нет никаких 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