2017-04-26 12 views
0

Twilio 계정으로 전송 된 모든 미디어를 다운로드하려고하는데 실제 삶에 대해 실제 이미지에 액세스하는 방법을 알 수 없습니다.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 떨어져 말할 수 없다. 미리 감사드립니다! twilio.rest 수입 클라이언트 가져 오기 요청에서 을 philnash하는

솔루션 감사 수입 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