http://kb.mailchimp.com/api/resources/lists/members/lists-members-collectionUzyskaj wszystkie elementy z listy za pomocą MailChimp API 3,0
Stosując ten zasób możemy uzyskać tylko pierwszych 10 członków. Jak zdobyć wszystko?
http://kb.mailchimp.com/api/resources/lists/members/lists-members-collectionUzyskaj wszystkie elementy z listy za pomocą MailChimp API 3,0
Stosując ten zasób możemy uzyskać tylko pierwszych 10 członków. Jak zdobyć wszystko?
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
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.
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ć.
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")
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.
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
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
@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
liczba wydaje się być zmaksymalizowana na poziomie 1000. Musisz więc iterować wszystkich członków w wielu rozmowach. – Crewone