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

Posted

技术标签:

【中文标题】如何使用 Mailchimp API 3.0 从用户或兴趣中获取超过 10 个条目?【英文标题】:How do I get more than 10 entries from Users or Interests using Mailchimp API 3.0? 【发布时间】:2015-08-19 16:56:03 【问题描述】:

我在 mailchimp 中有一些列表,其中一些拥有数千名用户,其中一位代表建议我合并我的一些列表并使用“组”(A.K.A. Interests)来定位某些受众。

我有一个“兴趣类别”,其中包含 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\t1".format(interest['name'],interest['id'])

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

【问题讨论】:

我不确定 Mailchimp API 3.0 是否可以使用。 Mailchimp API 2.0 是否有“兴趣”功能? 是的,你可以在 2.0 中与兴趣组一起做各种事情。 API v3.0 已上线并在各个地方用于生产。 getting started 文档涵盖了分页。 是的,我已经在 python 中为 Mailchimp API v3 开发了一个包,看看github.com/charlesthk/python-mailchimp 【参考方案1】:

在 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 个项目开始获得 5 个项目(“第 3 页”,项目 11 - 16)

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

我根据与其名称匹配的兴趣 ID 找到了我要查找的内容。用户对象已经在一个数组中包含所有兴趣 ID,而不是按类别查找 ID,我只是使用这些 ID 向后查找它们的名称。对于将来可能遇到相同问题的任何人,这是我编写的用于查找具有 ID 的名称的代码 sn-p:

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 匹配的更好方法,请将其添加到此答案中。

【讨论】:

【参考方案2】:

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

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

【讨论】:

这里的答案是正确的,但是之前的答案已经包含了这个信息。这个答案基本上只是一个简化版。 我认为之前的答案是不正确的,因为上面写着:“?count=5&offset=1 .. will get 5 items 从第 2 页开始...(第 6 - 10 项)” .因为它会让项目 (2-6) 跳过第一个项目。 啊,是的,你是对的。我会更正上一个答案。【参考方案3】:

我遇到了类似的问题,每个兴趣类别仅加载 10 个兴趣,但埋没in the documentation(在分页下,api 版本 3.0)是默认情况下“计数”为 10。我只是更改了计数参数到一个更大的数字,并返回所有兴趣,而无需使用循环机制来拉所有记录。

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

【讨论】:

以上是关于如何使用 Mailchimp API 3.0 从用户或兴趣中获取超过 10 个条目?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用他们的 api 3.0 创建/更新大量电子邮件到 Mailchimp 列表?

如何使用 Mailchimp API 3.0 和 Gibbon 2.x 订阅新用户

使用 API 3.0 实现 Mailchimp 双重选择加入

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

如何通过 MailChimp 3.0 api 发送电子邮件?

通过合并字段使用 MailChimp API 3.0 搜索成员