2015-03-31 2 views
1

Я пытаюсь загрузить всех членов списка (их более 50000), но я не могу найти никакого способа сделать это через API MailChimp. С другой стороны, я попытался использовать метод GetAllMembersForList, как показано ниже, но он не получает всех из них (он получает только 600).Получить всех участников списка

Может ли кто-нибудь сообщить мне, есть ли другой способ загрузить список участников?

public List<string> GetListMembers(string membersList) 
    { 
     ListResult lists = mc.GetLists(); 
     List<string> li = new List<string>(); 
     foreach(var list in lists.Data) 
     { 
      if (list.Name == membersList) 
      { 
       MembersResult res; 
       for (int i = 0; i <= list.Stats.MemberCount; i = i + 100) 
       { 
        res = new MembersResult(); 
        res = mc.GetAllMembersForList(list.Id, "subscribed", i, 100); 

        foreach (var member in res.Data) 
         li.Add(member.Email); 
       } 
       break; 
      } 
     } 
     return li; 
    } 
+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Проголосовали за закрытие, потому что проблема, скорее всего, не с вашим кодом, а как указано ниже, тот факт, что вы игнорируете ограничения по ограничению/ограничению полосы пропускания. Я реализовал программное обеспечение для получения очень больших наборов данных (например, на один или два порядка больше, чем вы здесь) от MC, и решение заключается в замедлении ваших запросов и терпимости к 500-м и другим ошибкам, которые вы получаете как результат их дросселирования. – evanmcdonnal

ответ

1

Наконец-то я нашел решение. Я узнал здесь https://apidocs.mailchimp.com/export/1.0/list.func.php, и я реализовал что-то вроде ниже. Я полностью уверен, что кто-то может улучшить это, но это то, что мне нужно в то время.

Вот код, если кто-то хочет реализовать:

 public List<string> GetListMembers(string membersList, string status, string since = "") 
    { 
     List<string> li = new List<string>(); 
     //to see what does <dc> means? follow this link https://apidocs.mailchimp.com/api/rtfm/ 
     string linkPage = @"http://<dc>.api.mailchimp.com/export/1.0/list/?apikey={0}&id={1}&status={2}{3}"; 
     ListInfo list = mc.GetLists().Data.Where(x => x.Name == membersList).FirstOrDefault(); 
     linkPage = string.Format(linkPage, conectionMailChimp, list.Id, status, !string.IsNullOrEmpty(since) ? "&since=" + since : string.Empty); 

     WebClient wc = new WebClient(); 
     string text = wc.DownloadString(linkPage); 
     text = text.Replace("\"", ""); 
     string[] res = text.Split(new[] { "]\n[" }, StringSplitOptions.None); 

     for (int i = 1; i < res.Length; i++) 
      li.Add(res[i].Split(new[] { "," }, StringSplitOptions.None)[0].ToString()); 

     return li; 
    } 
0

Чтобы получить всех участников за один звонок (что редко требуется на самом деле), вы можете использовать Export API. В противном случае лучше всего использовать функции разбиения на страницы и загрузить 600 за раз.

+0

спасибо за это, но нет интеграций для C#. У вас есть? или Не могли бы вы помочь мне интегрировать это? Заранее спасибо за вашу помощь. – Jotch

Смежные вопросы