2017-04-26 95 views
0

我試圖下載所有發送到我的Twilio帳戶的媒體,並且無法爲我的生活找出如何訪問實際圖像。從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 

我只是迷路了,在文檔中找不到任何具體的例子。我真的不知道我是否接近,或waaaaaaaaaaay關閉。提前致謝!

SOLUTION由於philnash從twilio.rest進口客戶 導入請求 進口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 
+0

從代碼中得到什麼錯誤? – philnash

+0

就是這樣。我沒有收到任何錯誤,我只是繼續訪問這個URI循環,從來沒有真正到過可以下載照片的地方。沒有錯誤,只是令人困惑。 – Mark

+0

上面的代碼返回一堆MediaInstance對象: Mark

回答

1

Twilio開發者傳道這裏。

當您從幫助程序庫獲取媒體URI時,它是資源的json表示並以.json結尾。要獲取原始資源,只需刪除.json擴展名。您可以使用該URL來下載圖像。

+0

你把天使傳福音!非常感謝;正是解決方案! – Mark

+0

☺️很高興它解決了你的問題! – philnash