如何使用Mailchimp API 3.0从用户或兴趣中获得10个以上的条目?

时间:2015-06-04 21:42:12

标签: python mailchimp mailchimp-api-v3.0

我在mailchimp中有一些列表,其中一些有成千上万的用户,其中一位代表建议我合并我的一些列表并使用' groups' (A.K.A.兴趣)以某些受众为目标。

我有一个'兴趣类别'它包含40多个不同的兴趣,我想在名称旁边获取他们的ID,这样我就可以通过API订阅用户并将它们添加到正确的'群组/兴趣'。

我非常接近获得他们的兴趣以及他们的名字,但是文档没有说明增加条目数量或进入下一个10。 http://kb.mailchimp.com/api/resources/lists/interest-categories/interests/lists-interests-collection

如果这有帮助,这就是我用来提高兴趣的代码。 (用Python编写并使用'请求'库)

import requests
print "Name\tID"
r = requests.auth.HTTPBasicAuth('x', '00000000000000000000000000000-us4')
interest_categories_raw = requests.get('http://us4.api.mailchimp.com/3.0/lists/0000000000/interest-categories/', auth=r)
interest_categories = json.loads(interest_categories_raw.content)
for category in interest_categories['categories']:
    url = 'http://us4.api.mailchimp.com/3.0/lists/0000000000/interest-categories/{0}/interests'.format(str(category['id']))
    interests = json.loads(requests.get(url, auth=r).content)
    for interest in interests['interests']:
        print "{0}\t{1}".format(interest['name'],interest['id'])

我有什么方法可以获得其余的兴趣/群组',名称和ID,以便我可以正确分配它们? (除了上传测试用户和修补他们的兴趣数据以及检查网站以查看他们被添加到哪些组别之外的任何其他方式)

3 个答案:

答案 0 :(得分:9)

在TooMuchPete的评论中,他提到getting started文件提到了分页。 Mailchimp的API使用'count'和'offset'作为分页。它们是添加到URL末尾的参数。 Count是每页的项目数量,Offset是从页面开始的距离(offset = 0将从第一个条目开始)。所以网址

https://us4.api.mailchimp.com/3.0/lists/XXXXXXXXXX/members/?count=5&offset=10

将从第11个项目(“第3页”,第11 - 16项)开始获得5个项目

在TooMuchPete的评论之前,我用这个回答了我自己的问题:

我根据与他们的名字相匹配的兴趣ID找到了我要找的东西。用户对象已经将所有兴趣ID都放在一个数组中,而不是按类别查找ID,我只是使用ID来查找它们的名称。对于将来可能遇到同样问题的任何人,这是我编写的代码片段,用于查找带有ID的名称:

import requests
print "ID\tName"
r = requests.auth.HTTPBasicAuth('x', '00000000000000000000000000000000-us4')
interest_categories_raw = requests.get('http://us4.api.mailchimp.com/3.0/lists/0000000000/interest-categories/', auth=r)
interest_categories = json.loads(interest_categories_raw.content)

# List of all the interest IDs. Can be found from any user
# https://us4.api.mailchimp.com/3.0/lists/0000000000/members/000000000000000000000000
interest_ids = ["00000000000", "0000000000"]

for i_id in interest_ids:
    for category in interest_categories['categories']:
        url = 'http://us4.api.mailchimp.com/3.0/lists/0000000000/interest-categories/{0}/interests/{1}'.format(str(category['id']), str(i_id))
        raw_response = requests.get(url, auth=r)
        if raw_response.status_code != 404:
            interest = json.loads(raw_response.content)
            print interest['id'] + "\t" + interest['name']

此代码将查找所有名称,并将它们与列表的所有ID匹配。如果其他任何人找到更好的方法将名称与ID匹配,请将其添加到此答案中。

答案 1 :(得分:2)

您应该使用/?count=&offset=参数,但为了进行分页,偏移量必须不是+1,而是+count,因为它的偏移量不是页面。

因此?count=50&offset=50会为您提供51-100(第2页)

答案 2 :(得分:1)

我遇到了类似的问题,每个兴趣类别只加载了10个兴趣,但是in the documentation(在分页下,api版本3.0)被隐藏的是" count"是10.我只是将count参数更改为一个更大的数字,并返回所有兴趣,而不必使用循环机制来提取所有记录。

https://usX.api.mailchimp.com/3.0/campaigns?offset=0&计数= 37