【问题标题】:Downloading media files from Twilio in Python在 Python 中从 Twilio 下载媒体文件
【发布时间】:2017-04-26 22:42:58
【问题描述】:

我正在尝试下载发送到我的 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 导入客户端 导入请求 导入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

【问题讨论】:

  • 您从该代码中得到了什么错误?
  • 就是这样。我没有收到错误消息,我只是一直进入这个 URI 循环,而实际上从未到达可以下载照片的地方。没有错误,只是令人困惑。
  • 以上代码返回一堆MediaInstance对象:
  • 那些对象有一个 uri,当我调用它时,我得到 `` {u'parent_sid': u'MMxxxxx', u'date_updated': u'Wed, 26 Apr 2017 21:20:30 +0000', u'uri': u'/2010-04-01/Accounts/ACdxxxxx/Messages/MMxxxxx/Media/MExxxxx.json', u'account_sid': u'ACxxxxx4', u'content_type': u' image/jpeg', u'sid': u'MExxxxx4', u'date_created': u'Wed, 26 Apr 2017 21:20:30 +0000'}``

标签: python api mobile twilio mms


【解决方案1】:

这里是 Twilio 开发者宣传员。

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

【讨论】:

  • 你把天使放在布道者身上!非常感谢;正是解决方案!
  • @philnash 这对我不起作用。我正在使用没有扩展名的 MediaUrl,它一直向我发送 xml。永远无法获得实际图像。
  • 不确定你发生了什么,但也许查看这篇博文以获得比我在这个答案中得到的更详细的信息:twilio.com/blog/2018/05/…
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2017-04-28
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多