timitek / getrets
timitek的GetRETS API的一个简单的“无框架”PHP包装器(http://www.timitek.com)。GetRETS是timitek开发的一个产品/服务,使得能够快速构建从多个MLS拉取列表数据的房地产相关应用程序,无需了解任何关于RETS或IDX,也不必担心映射和存储从这些不同来源的列表数据的问题。
Requires
- php: >=5.4.45
This package is not auto-updated.
Last update: 2024-09-29 02:26:37 UTC
README
timitek的GetRETS® API的一个简单的“无框架”php包装器(http://www.timitek.com)。
演示地址: http://www.timitek.com/phpsdk/
GetRETS®是timitek开发的一个产品/服务,它使得能够快速构建从多个MLS拉取列表数据的房地产相关应用程序,无需了解任何关于RETS或IDX,也不必担心映射和存储从这些不同来源的列表数据的问题。
GetRETS®作为一个服务提供RESTful API端点以消费数据,尽管它不仅限于仅用于PHP应用程序,并且用户不需要使用我们的SDK,但我们已经提供了一个简单的PHP SDK以及它的使用文档。
目录
如何使用
下载/安装
所需的所有操作是从src下载单个GetRETS.php文件并在您的项目中使用。
可选地,您可以使用composer进行安装。
composer require timitek/getrets
传统PHP使用
include "GetRETS.php"; use Timitek\GetRETS\GetRETS; $getRets = new GetRETS($customerKey); $listings = $getRets->getListing()->searchByKeyword($preparedKeywords);
列表
用于处理预取/缓存的列表数据的主控制器。
(new GetRETS($customerKey))->getListing();
这是检索缓存的列表的主要入口点。使用此入口点将拉取从您的MLS预取的数据。
优势
- 更快的数据检索 (数据的检索无需与MLS RETS提供商协商和翻译)
- 更高级的搜索 (由于是预取的数据,我们不受DMQL查询或其他RETS提供商限制的限制)
- 即使在MLS维护时也能工作
缺点
- 数据不是100%实时 (我们正在不断轮询MLS以获取新数据,但新列表可能需要一小时左右才会显示出来,并且我们每24小时刷新一次每个列表)
searchByKeyword
按关键词搜索列表
(new GetRETS($customerKey))->getListing()->searchByKeyword($preparedKeywords);
一个简单的搜索,将检索通过关键词搜索的列表。
参数
keyword - 搜索的关键词
返回
一个包含CondensedListing的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
search
高级搜索
(new GetRETS($customerKey))->getListing()->search($keywords, $extra, $maxPrice, $minPrice, $beds, $baths, $includeResidential, $includeLand, $includeCommercial);
一个更高级的搜索,通过可选参数检索受限制的列表。
参数
keyword - 搜索的关键词
extra - (可选) 以逗号分隔的额外搜索词列表(高尔夫,湖,等...)
maxPrice - (可选) 列表价格的最大值
minPrice - (可选) 列表价格的最小值
beds - (可选) 需要的最小床数
baths - (可选) 需要的最小浴室数
includeResidential - (可选) 包含住宅列表
includeLand - (可选) 包含土地列表
includeCommercial - (可选) 包含商业列表
注意 - 如果您没有设置任何 include 参数,则将假定所有参数都已设置。
返回
一个包含CondensedListing的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
details
获取特定列表的详细信息
(new GetRETS($customerKey))->getListing()->details($listingSource, $listingType, $listingId);
检索特定列表的更详细/非压缩的详细信息。您通常将搜索函数返回的值用作参数。
参数
listingSource - MLS 列表源的字符串表示(参见 FeedsModels.Models.enumListingSource)
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
listingId - 要检索的列表的唯一 ID
返回
单个 Listing
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
imageUrl
获取用于显示图像的 URL
(new GetRETS($customerKey))->getListing()->imageUrl($listingSource, $listingType, $listingId, $photoId, $width = null, $height = null);
检索与特定列表关联的图像(图像)。
特别说明 - 虽然宽度和高度参数是可选的,但使用它们指定合适的图像大小将提高您网站渲染速度,降低下载完整尺寸图像的需要。
此外,获取第一张照片($photoId = 0)是显示缩略图的建议策略。
参数
listingSource - MLS 列表源的字符串表示(参见 FeedsModels.Models.enumListingSource)
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
listingId - 要检索的列表的唯一 ID
photoId - 要检索的图片的零基索引(参见列表详细信息中返回的 photoCount)。
width - 用于调整照片大小的宽度
height - 用于调整照片大小的长度
返回
指定图像的 URL
RETSListing
使用 RETS 处理 MLS 中包含的实时数据的主控制器
(new GetRETS($customerKey))->getRETSListing();
这是从 MLS 通过 RETS 获取 实时 列表数据的主要入口点
优势
- 数据将立即从 MLS RETS 服务器查询
缺点
- 比缓存方法慢一点。(数据已转换为 DMQL 并从第三方服务器检索)
- 关键字搜索应用的 "模糊逻辑" 较少,因为我们仅限于通过 MLS 定义的 DMQL 类进行搜索。
- 如果您的 MLS 因维护而关闭,则无法检索结果。
特别说明 - 用于从缓存数据中获取数据的所有相同函数(参见上面的列表控制器函数)也适用于此 API 控制器,因为它们具有相同的签名,只是它们将直接访问 RETS 服务器。
searchByKeyword
按关键词搜索列表
(new GetRETS($customerKey))->getRETSListing()->searchByKeyword($preparedKeywords);
一个简单的搜索,将检索通过关键词搜索的列表。
参数
keyword - 搜索的关键词
返回
一个包含CondensedListing的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
search
高级搜索
(new GetRETS($customerKey))->getRETSListing()->search($keywords, $extra, $maxPrice, $minPrice, $beds, $baths, $includeResidential, $includeLand, $includeCommercial);
一个更高级的搜索,通过可选参数检索受限制的列表。
参数
keyword - 搜索的关键词
extra - (可选) 以逗号分隔的额外搜索词列表(高尔夫,湖,等...)
maxPrice - (可选) 列表价格的最大值
minPrice - (可选) 列表价格的最小值
beds - (可选) 需要的最小床数
baths - (可选) 需要的最小浴室数
includeResidential - (可选) 包含住宅列表
includeLand - (可选) 包含土地列表
includeCommercial - (可选) 包含商业列表
注意 - 如果您没有设置任何 include 参数,则将假定所有参数都已设置。
返回
一个包含CondensedListing的数组
[
{
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
details
获取特定列表的详细信息
(new GetRETS($customerKey))->getRETSListing()->details($listingSource, $listingType, $listingId);
检索特定列表的更详细/非压缩的详细信息。您通常将搜索函数返回的值用作参数。
参数
listingSource - MLS 列表源的字符串表示(参见 FeedsModels.Models.enumListingSource)
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
listingId - 要检索的列表的唯一 ID
返回
单个 Listing
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
imageUrl
获取用于显示图像的 URL
(new GetRETS($customerKey))->getRETSListing()->imageUrl($listingSource, $listingType, $listingId, $photoId, $width = null, $height = null);
检索与特定列表关联的图像(图像)。
特别说明 - 虽然宽度和高度参数是可选的,但使用它们指定合适的图像大小将提高您网站渲染速度,降低下载完整尺寸图像的需要。
此外,获取第一张照片($photoId = 0)是显示缩略图的建议策略。
参数
listingSource - MLS 列表源的字符串表示(参见 FeedsModels.Models.enumListingSource)
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
listingId - 要检索的列表的唯一 ID
photoId - 要检索的图片的零基索引(参见列表详细信息中返回的 photoCount)。
width - 用于调整照片大小的宽度
height - 用于调整照片大小的长度
返回
指定图像的 URL
executeDMQL
通过 DMQL 查询返回 MLS 结果
(new GetRETS($customerKey))->getRETSListing()->executeDMQL($query, $feedName, $listingType);
这是一个强大的功能,它将在 RETS MLS 服务器上执行原始 DMQL 并以序列化对象的形式返回结果。
特别说明 - 这些结果不会以类似于其他列表详细搜索的方式返回。这些结果以 MLS RETS 服务器返回的格式返回。如果您希望以 转换 格式检索列表,请使用 getListingsByDMQL。
参数
query - 要在 MLS RETS 服务器上执行的 DMQL
feedName - 要运行查询的源名称
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
返回
包含查询成功或失败以及检索到的原始序列化结果的封装响应。这些序列化结果将因 feedName 和 listingType 而异。
{
"success": true,
"code": 0,
"message": "string",
"data": [
{
"className": "string"
}
]
}
getListingsByDMQL
通过 DMQL 查询获取已翻译的列表
(new GetRETS($customerKey))->getRETSListing()->getListingsByDMQL($query, $feedName, $listingType);
这是一个强大的功能,它将在 RETS MLS 服务器上执行原始 DMQL 并将结果作为序列化对象返回。它与 executeDMQL 类似,但是此功能将 转换 数据以与检索列表详细信息的其他方法返回的格式相同。
参数
query - 要在 MLS RETS 服务器上执行的 DMQL
feedName - 要运行查询的源名称
listingType - 列表类型的字符串表示,例如住宅、土地等。(参见 FeedsModels.Models.enumListingType)
返回
包含查询成功或失败以及检索到的原始序列化结果的封装响应。
{
"success": true,
"code": 0,
"message": "string",
"data": [
{
"description": "string",
"features": [
"string"
],
"photoCount": 0,
"id": "string",
"listingSourceURLSlug": "string",
"listingTypeURLSlug": "string",
"listingID": "string",
"listingSource": 1,
"listingType": 1,
"address": "string",
"baths": 0,
"beds": 0,
"listPrice": "string",
"rawListPrice": 0,
"providedBy": "string",
"squareFeet": 0,
"lot": "string",
"acres": "string"
}
]
}
Geocoding
处理地址的主要控制器
(new GetRETS($customerKey))->getGeocoding();
本控制器是计划增长的一个区域,旨在提供更高级的地理空间搜索以用于列表数据。目前,它用于将关键词解析成更多用于搜索的地理编码数据。
如果您提供与您的账户关联的Google地理编码密钥,您可以使用这些方法。
parseGoogleResults
翻译Google返回的结果
(new GetRETS($customerKey))->getGeocoding()->parseGoogleResults($googleResults);
此功能将解析Google服务返回的结果,并将它们转换成更适用于搜索列表数据的统一格式。
参数
googleResults - 来自Google地理编码器.geocode的结果
[
{
"address_components": [
{
"long_name": "string",
"short_name": "string",
"types": [
"string"
]
}
],
"formatted_address": "string",
"geometry": {
"bounds": {
"south": 0,
"west": 0,
"north": 0,
"east": 0
},
"location": {
"lat": 0,
"lng": 0
},
"location_type": "string",
"viewport": {
"south": 0,
"west": 0,
"north": 0,
"east": 0
}
},
"place_id": "string",
"types": [
"string"
]
}
]
返回
作为AddressDetail翻译的数据。
[
{
"streetNumber": "string",
"street": "string",
"city": "string",
"county": "string",
"state": "string",
"stateAbbreviation": "string",
"country": "string",
"postalCode": "string",
"latitude": 0,
"longitude": 0,
"formattedAddress": "string"
}
]
googleGeocode
以自由格式文本输入的地理编码地址
(new GetRETS($customerKey))->getGeocoding()->googleGeocode($address);
此功能将接收一个关键词,并通过Google地理编码服务运行它,然后返回翻译后的结果。
参数
address - 要地理编码的自由格式文本(预期这是一个可能的地址)
返回
作为AddressDetail翻译的数据。
[
{
"streetNumber": "string",
"street": "string",
"city": "string",
"county": "string",
"state": "string",
"stateAbbreviation": "string",
"country": "string",
"postalCode": "string",
"latitude": 0,
"longitude": 0,
"formattedAddress": "string"
}
]
辅助函数
以下方法不是API端点,但可以在SDK中用于辅助功能。
setLimit
用于限制返回的结果
(new GetRETS($customerKey))->getListing()->setLimit(10)->searchByKeyword($preparedKeywords);
此属性用于限制返回的结果数量。(默认为null,表示无限制)
setSortBy / setReverseSort
用于对返回的结果进行排序/排序
(new GetRETS($customerKey))->getListing()->setSortBy("providedBy")->setReverseSort(true)->searchByKeyword($preparedKeywords);
setSortBy
此属性用于设置按哪个列对数据进行排序。
setReverseSort
此属性用于设置按sortBy列排序的顺序(升序/降序)。(默认为false,表示升序)
默认情况下,列表将按价格从低到高排序。如果您想更改默认值,可以修改以下行。
private $sortBy = "rawListPrice"; private $reverseSort = false;
如果您想在应用的其他任何部分手动排序列表,可以使用setSortBy和setReverseSort方法,如以下语法所示。
$listings = $getRets->getListing()->setSortBy("providedBy")->setReverseSort(true)->searchByKeyword($preparedKeywords);
进一步阅读
关于API本身的更多信息可以在Swagger UI(http://getrets.net/swagger/)中找到。