NAR-NRDS-API服务的完整Python包装器

pynrds的Python项目详细描述


pynrds公司

pynrds最终将成为NAR-NRDS-API服务的完整Python库。在

安装

pip install pynrds

使用

NRDS API的结构非常简单,因此使用requests模块查询它非常简单:

importrequestsimportjson# NRDS API spec specifies 'MemberID' for NRDS id #member_id='123456789'# UserRole is provided by NAR for API accessuser_role='abc-123-defg-4567'# SenderMemberId is the API user's NRDS id# (??)sender_member_id='987654321'# NRDS Beta API urlbase_url='https://beta.api.realtor.org/data'# endpointendpoint='/members/'# put them togetherurl=f'{base_url}{endpoint}{member_id}'# create your payload of credentialspayload={'UserRole':user_role,'SenderMemberId':sender_member_id}# make the http request and return the result as a json object 'reply'reply=requests.post(url,payload).json()# or make the request with a function:defget_single_member(member_id):payload={'UserRole':user_role,'SenderMemberId':sender_member_id}url=f'{base_url}/members/{member_id}'reply=requests.post(url,payload).json()return(reply)

附加的端点和查询是相似的,一旦我有了一个系统来验证它们,我就会构建它们,但这并不是我真正感兴趣的挑战。。。在

当然,更有趣的问题是,仅使用nrdsapi提供的数据,只使用开源工具可以做什么?为了探索这些问题,我们需要样本数据,这样我们就可以尝试新事物并制作复杂的模型,而不需要使用或影响实时NRDS信息,或者作为学习如何使用API返回的数据的一部分来发布成员数据。因此,我的短期目标是创建一个完整的模拟NRDS数据的测试集,任何人都可以根据自己的需要使用、缩放和定制,然后为该测试集创建一个虚拟API,它精确地反映NRDS API的(典型的、有文档记录的)行为。它应该可以创建任何大小的模拟关联,将真实但虚假的NRDS数据填充到其“成员”中,然后使用它来测试基于NRDS API的任何可想象的应用程序,而无需在早期测试中使用它。在

更新10/12/20:初始pypi版本

将当前构建推送到pypi,以便它可以作为模块安装。在get_random_member()中添加了一个指定部分来演示基本方法-概率和其他细节仍然需要微调。更新以下示例。添加了一个改进的get_single_member()方法,该方法应该在beta NRDS API上工作。在

^{pr2}$

更新10/10/20:

创建并上载了get_member.py,它返回一个JSON包,该包的随机成员数据的格式与NRDS API /member/端点的格式相同。首先解决了简单的元素,这个脚本不会为认证、名称等生成模拟数据(还!)但其他信息对于测试目的来说似乎足够现实。年龄、出生日期、会员年数、NRDS插入日期和所有其他信息都是随机的,但要遵循一些规则以使数据真实。脚本的依赖项都在import部分,特别是Delorean和{},以及两个不同的伪数据库:mimesis和{},其中{}负责大部分工作。输出的地址有点“欧洲”的味道,特别是英国的,但足够接近。在

一旦我完成了所有NRDS端点的模拟数据模板,我就可以创建一个代理API,它将返回真实但假的类似NRDS的数据,并让我们快速模拟查询并构建真实的应用程序,这些应用程序可以使用“真实”的NRDS数据。最终,我们将创建一个完整的伪关联的NRDS记录并将其存储起来,这样我们就可以像NRDS API那样与它进行交互。代码中有一些关于主题的线索。。。在

下面get_random_member()的输出示例:

[{"Member":{"AssociationId":"8128","Designations":[{"DesignationCode":"CCIM","DesignationDate":"05-03-2016","DesignationDescription":"Certified Commercial Investment Member","MemberId":"812865015","Timestamp":5567039},{"DesignationCode":"SRS","DesignationDate":"11-03-2010","DesignationDescription":"Seller Representative Specialist","MemberId":"812865015","Timestamp":7695568}],"DirectoryOptOut":"N","DuesWaivedLocalFlag":"N","DuesWaivedNationalFlag":"N","DuesWaivedStateFlag":"N","Email":"coyan1977@live.com","JoinedDate":"07-16-2012","JunkMailFlag":"Y","MLSID":"6142","MemberArbitrationEthicsPending":"Y","MemberBirthDate":"05-29-1950","MemberCellPhone":{"PhoneArea":636,"PhoneNumber":8533602},"MemberDesignatedRealtor":"N","MemberFirstName":"Cordia","MemberGender":"F","MemberGeneration":"Jr.","MemberHomeAddress":{"City":"Springfield","Country":"US","State":"OR","Street1":"880 Kempton Plaza South","Street2":"#168","Zip":"34321","Zip6":"2109"},"MemberHomePhone":{"PhoneArea":939,"PhoneNumber":8493749},"MemberId":"812865015","MemberLastName":"Castro","MemberLocalJoinedDate":"07-16-2012","MemberMLSAssociationId":"42774","MemberMailAddress":{"City":"Capital City","Country":"US","State":"OR","Street1":"317 Fanning Promenade NW","Street2":"","Zip":"95866","Zip6":"1419"},"MemberMiddleName":"","MemberNRDSInsertDate":"07-16-2012","MemberNationalDuesPaidDate":"09-23-2019","MemberNickname":"","MemberOccupationName":"Administration Staff","MemberOfficeVoiceExtension":"6787","MemberOnlineStatus":"Y","MemberOnlineStatusDate":"","MemberOrientationDate":"07-23-2012","MemberPager":{"PhoneArea":939,"PhoneNumber":9731711},"MemberPersonalFax":{"PhoneArea":636,"PhoneNumber":2949099},"MemberPreferredFax":"O","MemberPreferredMail":"M","MemberPreferredPhone":"H","MemberPreferredPublication":"O","MemberPrimaryStateAssociationId":"0862","MemberRELicense":"SL743006","MemberReinstatementCode":"","MemberReinstatementDate":"","MemberSalutation":"","MemberStateDuesPaidDate":"09-23-2019","MemberStatus":"A","MemberStatusDate":"","MemberSubclass":"R","MemberTitle":"","MemberType":"R","OfficeId":"8128","OnRosterFlag":"Y","PointOfEntry":"070008128","PreviousNonMemberFlag":"N","PrimaryIndicator":"P","StopEMailFlag":"N","StopFaxFlag":"N","StopMailFlag":"N","Timestamp":9776510,"WebPage":"https://agnosia.name"}},{"Member":{"AssociationId":"8128","Designations":[],"DirectoryOptOut":"N","DuesWaivedLocalFlag":"N","DuesWaivedNationalFlag":"N","DuesWaivedStateFlag":"N","Email":"hydromyelocele2040@gmail.com","JoinedDate":"11-01-2012","JunkMailFlag":"Y","MLSID":"5877","MemberArbitrationEthicsPending":"N","MemberBirthDate":"04-27-1959","MemberCellPhone":{"PhoneArea":939,"PhoneNumber":9868824},"MemberDesignatedRealtor":"N","MemberFirstName":"Talisha","MemberGender":"F","MemberGeneration":"","MemberHomeAddress":{"City":"Springfield","Country":"US","State":"OR","Street1":"984 Arleta Esplanade SW","Street2":"","Zip":"55571","Zip6":"2928"},"MemberHomePhone":{"PhoneArea":636,"PhoneNumber":1802199},"MemberId":"812888551","MemberLastName":"Kidd","MemberLocalJoinedDate":"11-01-2012","MemberMLSAssociationId":"96006","MemberMailAddress":{"City":"Shelbyville","Country":"US","State":"OR","Street1":"865 Portal St NW","Street2":"","Zip":"24041","Zip6":"8198"},"MemberMiddleName":"","MemberNRDSInsertDate":"11-01-2012","MemberNationalDuesPaidDate":"12-06-2019","MemberNickname":"","MemberOccupationName":"Prison Chaplain","MemberOfficeVoiceExtension":"5902","MemberOnlineStatus":"Y","MemberOnlineStatusDate":"","MemberOrientationDate":"02-21-2012","MemberPager":{"PhoneArea":636,"PhoneNumber":1426625},"MemberPersonalFax":{"PhoneArea":636,"PhoneNumber":8463141},"MemberPreferredFax":"O","MemberPreferredMail":"F","MemberPreferredPhone":"O","MemberPreferredPublication":"H","MemberPrimaryStateAssociationId":"0862","MemberRELicense":"SL397031","MemberReinstatementCode":"","MemberReinstatementDate":"","MemberSalutation":"","MemberStateDuesPaidDate":"12-06-2019","MemberStatus":"A","MemberStatusDate":"","MemberSubclass":"R","MemberTitle":"","MemberType":"R","OfficeId":"8128","OnRosterFlag":"Y","PointOfEntry":"070008128","PreviousNonMemberFlag":"N","PrimaryIndicator":"P","StopEMailFlag":"N","StopFaxFlag":"N","StopMailFlag":"N","Timestamp":5770472,"WebPage":"https://exogen.com"}}]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java楼梯的最大高度   java Jackson从1.7.1更新到2.8.6 JsonTypeInfo子类型反序列化   Spring WebApp中的java JPA异常处理   java在SwingWorker(doInBackground)中从WorkerThread调用多个方法?   java Android Studio构建到jar   java是添加多个按钮组的更有效方法   java MySQL JDBC连接池最大大小   java如何防止元素<Integer>变成元素<Object>   Java:处理大型XML文件提取数据而不编写状态自动机?   SpringBoot和React Web应用程序中CAS的java重定向问题   需要java算法方面的帮助吗   java在JDK 16中使用PowerMock   java异常错误本机方法签名   在Java Android中将JSON映射到数组/对象   如何打开一个窗口。java程序中的dat文件   java应用程序引擎+Maven+热插拔   java Moxy的getValueByXPath为除根元素以外的所有元素返回null