在 Python 中从 Twilio 下载媒体文件

Downloading media files from Twilio in Python

我正在尝试下载发送到我的 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

我迷路了,在文档中找不到任何具体示例。我什至不知道我是否接近,或者 waaaaaaaaaay 离开。提前致谢!

解决方案 感谢 philnash 来自 twilio.rest 导入客户端 导入请求 导入 json

# Find these values at https://twilio.com/user/account
ACCOUNT_SID = "xxxxx"
AUTH_TOKEN = "xxxxxx"
BASE_URL = "https://%s:%s@api.twilio.com" % (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

这里是 Twilio 开发人员布道者。

当您从帮助程序库中获取媒体 URI 时,它是资源的 json 表示形式,并以 .json 结尾。要获取原始资源,您只需去除 .json 扩展名。您可以使用那个 URL 下载图像。