如何使用 Mailchimp API 3.0 从用户或兴趣中获取超过 10 个条目?

How do I get more than 10 entries from Users or Interests using Mailchimp API 3.0?

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

我有一个 'interest-category',其中包含 40 多个不同的兴趣,我想在名称旁边获取他们的 ID,以便我可以通过 API 订阅用户并将他们添加到右侧 'groups/interests'.

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

如果这有帮助的话,这就是我用来拉起兴趣的代码。 (用 Python 编写并使用 'requests' 库)

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'])

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

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

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

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

在 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 匹配,请将其添加到此答案中。

您应该使用 /?count=&offset= 参数,但为了分页,偏移量不能增加 +1,而是 +count,因为它是偏移量而不是页面。

所以 ?count=50&offset=50 给你 51-100(第 2 页)

我遇到了类似的问题,每个兴趣类别只加载了 10 个兴趣,但隐藏 in the documentation(在分页下,api 3.0 版)是默认情况下 "count" 是10,我只是把count参数改大了,所有的兴趣都返回了,不用循环机制拉取所有记录。

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