2015-08-21 18 views

Odpowiedz

8

Odpowiedź jest dość prosta - używać przesunięcie i Impuls parametrów w zapytaniu URL:

https://us10.api.mailchimp.com/3.0/lists/b5b5fdc2fa/members?offset=150&count=10 

Wreszcie znalazłem PHP klienta API dla MailChimp API v3: https://github.com/pacely/mailchimp-api-v3

i oficjalne dokumenty o paginacji .. Brakowało mi tego wcześniej :( http://kb.mailchimp.com/api/article/api-3-overview

+1

Czy istnieje sposób na złapanie wszystkich członków? Na przykład w WordPress powiedziałbyś liczbę do -1, coś w tym stylu? – pocockn

+2

@pocockn Możesz pobrać je w dwóch etapach: 1) [uzyskaj całkowite przedmioty] (https://us9.api.mailchimp.com/3.0/lists/29e5c010dc/members?fields=total_items) 2) [pobierz wszystkich członków] (https://us9.api.mailchimp.com/3.0/lists/29e5c010dc/members?count=TOTAL_FROM_PREV_RESPONSE). Daj mi znać, jeśli znajdziesz lepsze rozwiązanie :) – graceman9

+1

liczba wydaje się być zmaksymalizowana na poziomie 1000. Musisz więc iterować wszystkich członków w wielu rozmowach. – Crewone

1

przesunięcie i liczba jest oficjalnym sposobem na dokumentach, ale problemem jest to, że ma liniowe spowolnienie. Wygląda na to, że jest to rozwiązanie n^2, więc jeśli masz 20 000 przedmiotów, masz kłopoty. Ich dokumenty ostrzegają przed użyciem przesunięcia.

Jeśli masz scenariusz, możesz użyć innych filtrów (takich jak since_last_changed), to możesz to zrobić szybko. Zobacz What is the right syntax for "timeframe" in MailChimp API 3.0 dla formatu datetime.

1

Możesz to zrobić po prostu zliczając, wykonując wywołanie API do list root, więc w następnym wywołaniu API podajesz parametr count i masz wszystkich członków listy.

Wpadłem na ten problem, ponieważ miałem umiarkowaną listę 2600 członków, a MailChimp popełnił błąd, ale zadziałało z 1500 osobami.

Tak więc dla listy większej niż 1500 członków używam MailChimp export API, mając na uwadze, że zostanie to przerwane, ale nie mogłem znaleźć żadnych innych akceptowalnych rozwiązań.

Alternatywnie dla większych list (> 1500) można uzyskać łącznie członków, a następnie dokonać kilku wywołań API do Member endpoint ale ja naprawdę lubię to :(

Jeśli ktoś ma lepszą alternatywę byłbym naprawdę zadowolony aby go usłyszeć.

1

Korzystanie offset i count parametry są prawidłowe, jak wspomniano w niektórych innych odpowiedzi, ale staje się uciążliwe dla dużych list.

bardziej efektywny sposób, jest użycie klienta dla API MailChimp. Użyłem mailchimp3 for python jest to dość łatwe do uzyskania wszystkich członków na liście, ponieważ obsługuje paginację. Oto, jak byś to zrobił.

from mailchimp3 import MailChimp 

client = MailChimp('YOUR_USERNAME', 'YOUR_SECRET_KEY') 
client.lists.members.all('YOUR_LIST_ID', get_all=True, fields="members.email_address") 
0

Natknąłem się na ten jeden podczas badania sposobu, aby uzyskać wszystkich członków listy w MC API 3.0, jak również. Zauważyłem, że pojawiły się komentarze na temat przekroczenia limitu czasu API podczas próby uzyskania wszystkich członków listy na jednej stronie. Zetknąłem się z tym na początku, ale udało mi się go przezwyciężyć poprzez ograniczenie pól w wyniku za pomocą parametru "pola". Mój kod jest przeznaczony dla masowych deleterów, więc potrzebowałem tylko identyfikatora każdego członka do złożenia żądania usunięcia partii. Oto jak moje żądanie pobierania wygląd (psuedo-kierunkowym):

$total_members = $result['total_items'];//get number of members in list via previous request 
https://usXX.api.mailchimp.com/3.0/lists/foobarx/members?fields=members.id&count=total_members 

ten sposób jestem w stanie pobrać ponad 15.000 abonentów na jednej stronie bez błędu.

+0

cześć, Czy jesteś w stanie usunąć klientów za pomocą procesu usuwania partii, musimy usunąć około 100K wiadomości spamowych z listy mailchimp. czy możesz podać tutaj pewną wskazówkę – p4pravin

Powiązane problemy