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