Я пытаюсь загрузить все медиафайлы, которые отправляются в мою учетную запись Twilio, и не могу понять, как получить доступ к фактическим изображениям.
from twilio.rest import Client
import requests
from operator import itemgetter
import json
ACCOUNT_SID = "xxxxxxx"
AUTH_TOKEN = "xxxxxxxx"
client = Client(ACCOUNT_SID, AUTH_TOKEN)
# builds a list of messages and media uris
messages = client.messages.list(from_="+19999999999")
msgs = []
for m in messages:
line = [m.from_, m.to, m.body, m.sid, m.subresource_uris['media']]
line = [str(x) for x in line]
msgs.append(line)
# with list of all messages:
msgs = sorted(msgs, key=itemgetter(0))
for m in msgs:
# get media list for each message that has one, else catch exception
try:
medias = client.messages(m[3]).media.list()
# returns Twilio.Api.V2010.MediaInstance and i'm stuck
for med in medias:
print client.messages(m[3]).media(med.sid).fetch()
except Exception as e:
pass
Я просто заблудился и не могу найти в документации конкретных примеров. Я действительно не могу даже сказать, близок ли я или нет. Заранее спасибо!
РЕШЕНИЕ Благодаря philnash из twilio.rest import Клиент импортирует запросы на импорт json
# Find these values at https://twilio.com/user/account
ACCOUNT_SID = "xxxxx"
AUTH_TOKEN = "xxxxxx"
BASE_URL = "https://%s:%[email protected]" % (ACCOUNT_SID, AUTH_TOKEN)
client = Client(ACCOUNT_SID, AUTH_TOKEN)
# with list of all messages:
messages = client.messages.list(from_="+1999999999")
for m in messages:
sid = m.sid
# get media list for each message that has one, else catch exception
try:
message = client.messages(sid).fetch()
print message.body
medias = message.media.list()
# returns Twilio.Api.V2010.MediaInstance and i'm stuck
for media in medias:
media_instance = client.messages(sid).media(media.sid).fetch()
uri = requests.get(BASE_URL + media_instance.uri).json()
uri2 = requests.get(BASE_URL + uri['uri'].replace('.json', ''))
with open(media_instance.uri.split("/")[-1].replace(".json", ".png"), "wb") as f:
f.write(uri2.content)
f.close()
except Exception as e:
print e