我正在尝试编写一个简单的脚本,使用python helper库从Twilio下载调用详细信息。到目前为止,我唯一的选择似乎是使用.iter()方法来获取对子帐户进行的每次调用。这可能是一个非常大的数字。
如果我使用.list()资源,它似乎没有在任何地方给我一个页面计数,所以我不知道在多长时间内继续分页以获得该时间段的所有调用。我错过了什么?
以下是带有代码示例的文档:http://readthedocs.org/docs/twilio-python/en/latest/usage/basics.html目前没有很好的文档说明,但是您可以使用以下API调用来遍历列表:
import twilio.rest
client = twilio.rest.TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN)
# iterating vars
remaining_messages = client.calls.count()
current_page = 0
page_size = 50 # any number here up to 1000, although paging may be slow...
while remaining_messages > 0:
calls_page = client.calls.list(page=current_page, page_size=page_size)
# do something with the calls_page object...
remaining_messages -= page_size
current_page += 1
您可以将page
和page_size
参数传递给list()
函数来控制您看到的结果。我今天将更新文档,使之更清楚。
正如在注释中提到的,上面的代码不能工作,因为remaining_messages = client.calls.count()总是返回50,这使得它对于分页毫无用处。
相反,我最终只是尝试下一页,直到它失败,这是相当hackky。库应该在分页的列表资源中包含numpages。
import twilio.rest
import csv
account = <ACCOUNT_SID>
token = <ACCOUNT_TOKEN>
client = twilio.rest.TwilioRestClient(account, token)
csvout = open("calls.csv","wb")
writer = csv.writer(csvout)
current_page = 0
page_size = 50
started_after = "20111208"
test = True
while test:
try:
calls_page = client.calls.list(page=current_page, page_size=page_size, started_after=started_after)
for calls in calls_page:
writer.writerow( (calls.sid, calls.to, calls.duration, calls.start_time) )
current_page += 1
except:
test = False