6

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

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

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

如果这有帮助,这就是我用来激发兴趣的代码。(用 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,以便我可以正确分配它们?(除了上传测试用户并修补他们的兴趣数据并检查网站以查看他们被添加到哪些组之外的任何方式)

4

3 回答 3

10

在 TooMuchPete 的评论中,他提到入门文档中提到了分页。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 的名称的代码片段:

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

于 2015-06-05T20:16:38.727 回答
2

我遇到了一个类似的问题,每个兴趣类别只加载了 10 个兴趣,但隐藏在文档中(在分页下,api 版本 3.0)默认情况下“计数”为 10。我只是将计数参数更改为更大数字和所有兴趣都被返回,而无需使用循环机制来提取所有记录。

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

于 2016-12-14T22:27:50.137 回答
2

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

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

于 2015-08-14T09:32:00.033 回答