2015-03-31 105 views
1

我試圖下載列表中的所有成員(有超過50000個),但我找不到在MailChimp API中執行此操作的任何方法。另一方面,我試圖使用下面的「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/)」,其中的共識是「不,他們不應該」。 – 2015-03-31 16:31:03

+0

投票結束導致問題可能不是與您的代碼,但正如下面指出的,你忽略了他們的限制/帶寬限制。我已經實現了從MC獲得非常大的數據集(比你在這裏談論的大一個或兩個數量級)的解決方案,並且解決方案是放慢你的請求,並且容忍500的錯誤以及你作爲他們節流的結果。 – evanmcdonnal 2015-03-31 16:35:28

回答

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 2015-04-01 10:42:46