Получение подписчиков с помощью вызова API для Campaign Monitor с помощью Create Send & Python
Алоха Друзья,
Извиняюсь за нубистский вопрос, я все еще нахожусь в младенчестве с Python & Programming и пытаюсь найти лучший способ сделать очень очень ручную задачу.
Я хотел бы получить всех подписчиков из Campaign Monitor, используя его API
Я прочитал и перечитал документацию по API и пришел к выводу, что мне нужно использовать этот фрагмент кода:
from __future__ import absolute_import
import json
from createsend.createsend import CreateSendBase, BadRequest
from createsend.utils import json_to_py, validate_consent_to_track
class Subscriber(CreateSendBase):
"""Represents a subscriber and associated functionality."""
def __init__(self, auth=None, list_id=None, email_address=None):
self.list_id = list_id
self.email_address = email_address
super(Subscriber, self).__init__(auth)
def get(self, list_id=None, email_address=None, include_tracking_preference=False):
"""Gets a subscriber by list ID and email address."""
params = {
"email": email_address or self.email_address,
"includetrackingpreference": include_tracking_preference,
}
response = self._get("/subscribers/%s.json" %
(list_id or self.list_id), params=params)
return json_to_py(response)
Я немного заблудился с кодом, я не уверен, нужно ли мне добавлять вышеупомянутый класс create send с помощью ключа API, и это просто даст мне полный список Json моих подписчиков..?
Сейчас я прохожу базовый курс API по Udemy, поэтому знаю, как пользоваться почтальоном и выполнять основные вызовы API с помощью Flask, но я не видел и не использовал Createsend.
Github для кода здесь
Документация здесь
Для тех, кто читает это, я действительно ценю ваше время (отвечаете вы или нет)!
С уважением, Датановице.
1 ответ
Привет от другого новичка. Наткнулся на ваше сообщение вчера, когда я пытался добавить подписчика в список, используя их API. Я немного боролся и мог решить эту проблему только с помощью старшего разработчика. так что не мучайся Я знаю, что это может быть немного поздно, но надеюсь, что это все еще помогает. если вы все же решили это, дайте мне знать:-)
во-первых, если вы хотите получить список всех подписчиков, вам нужно посмотреть эту часть https://www.campaignmonitor.com/api/lists/ Возможно, из вышеперечисленного вы получите по одному подписчику за раз. Я рекомендую использовать что-то вроде Postman, чтобы сделать несколько тестовых вызовов GET для API и посмотреть, какой из них дает вам нужные вам результаты. например, это то, что я получаю, когда звоню GET всем активным подписчикам списка:
{
"Results": [
{
"EmailAddress": "marco@polo.bro",
"Name": "Marco",
"Date": "2018-11-13 10:36:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
},
{
"EmailAddress": "marco@polo.broke",
"Name": "Marco",
"Date": "2018-11-13 10:38:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
},
{
"EmailAddress": "marco@polo.mkd",
"Name": "Marco",
"Date": "2018-11-13 17:22:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
},
{
"EmailAddress": "marco@polo.ro",
"Name": "Marco",
"Date": "2018-11-13 09:52:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
},
{
"EmailAddress": "subscriber1@example.com",
"Name": "New Subscriber",
"Date": "2018-11-13 16:55:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
},
{
"EmailAddress": "subscriber2@example.com",
"Name": "New Subscriber 2",
"Date": "2018-11-13 16:59:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
}
],
"ResultsOrderedBy": "email",
"OrderDirection": "asc",
"PageNumber": 1,
"PageSize": 1000,
"RecordsOnThisPage": 6,
"TotalNumberOfRecords": 6,
"NumberOfPages": 1
}
В противном случае попробуйте это (вы должны создать экземпляр класса Subscriber):
from createsend import *
list_id = 'your-list-id'
subscriber = Subscriber(
{'api_key': 'your-api-key'},
list_id,
email_address=None
)
user_email = 'user@example.com'
subscriber.get(list_id, user_email, include_tracking_preference=True|False)
Я думаю, что вы также можете просто сделать subscriber.get()
чтобы получить детали без каких-либо аргументов.
Надеюсь, поможет.
Удачного кодирования:-)