【问题标题】:How I can get all Clients with MindBody API python如何使用 MindBody API python 获取所有客户端
【发布时间】:2017-05-21 09:07:37
【问题描述】:

我正在尝试获取所有clients using MindBody API,我试过这个,

from suds.client import Client
from Helper.ClientService import ClientServiceMethods

# Making a call
calls = ClientServiceMethods()
result = calls.GetAllClients()
client_dict = Client.dict(result)
clients = client_dict['Clients']
client_list = clients.Client # transferring clients into a python list

#printing the lenght of received clients list
print len(client_list)

上面的代码可以工作,但问题是它不会拉超过 27 个客户端,仅此而已。 从MindBody Docs GettAllClients 应该得到最多 1000 个客户端,呼叫的限制是 1000,这意味着我最多可以得到 1000,但问题是我注意到我至少能够得到1000,我只有 27 个客户。

注意:我正在使用演示数据、沙盒,任何人都可以查看它们, 我使用了来自their MindBody Python repository的示例代码

我正在努力通过api获取所有客户端数据,这些客户端可以查看from here

用户名:网站所有者 |密码:apitest1234

【问题讨论】:

  • 您确定要抓取的客户端超过 27 个吗?
  • 是的,我相信你可以自己检查它们,我会在上面留下密码,任何人都可以查看,因为它们只是演示

标签: python api suds mindbody


【解决方案1】:

对于也遇到此问题的任何人,这对您来说将是一个很大的帮助。

当我们调用 GetClients 时,mindbody 将发送客户端,但它会以页面的形式表示它们,因此如果您想获得下一个 25 个客户端,则第 25 个客户端是第一页,您必须调用索引为 2 的页面等等等等。

在代码中你会这样做,使用API Example code ClientService,在GetClientsByString方法中这样做

def GetClientsByString(self, searchStr):
        """Convenience method to find clients containing searchStr in their name or e-mail."""
        request = self.CreateBasicRequest("GetClientsRequest")

        # Since SearchText is just a string, we can assign it directly.
        request.SearchText = searchStr
        request.CurrentPageIndex = 1 # increase this number by one each time 

        return self.service.service.GetClients(request)

【讨论】:

    【解决方案2】:

    我就是这样处理它的;对一种不依赖 API 的更好方法非常开放:

        clientService = ClientServiceCalls()
    
        #get all client IDs
    
        clientResponse = clientService.GetClientsByString('')
        clientList = clientResponse.Clients.Client
    
        clientVisitsDict = []
    
        for c in clientList:
    
            #Call get ClientVisits API on each Client ID
    
            clientResponseVisits = clientService.GetClientVisits(str(c.ID))
    
            if clientResponseVisits.Visits:
                visitsList = clientResponseVisits.Visits.Visit
                for v in visitsList:
    
                    ### your code here
    

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 2014-02-28
      • 1970-01-01
      • 2013-11-25
      • 2023-01-05
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多