wrongmove/rec/query.py
2023-11-18 12:30:04 +02:00

66 lines
1.6 KiB
Python

import pickle
import cachetools
from diskcache import Cache
import requests
from rec.db import RightmoveListing
import urllib3
urllib3.disable_warnings()
cache = Cache(r"_cache")
headers = {
"Host": "api.rightmove.co.uk",
# 'Accept-Encoding': 'gzip, deflate, br',
"User-Agent": "okhttp/4.10.0",
"Connection": "close",
}
@cache.memoize()
def listing_query(page: int, min_bedrooms: int, max_bedrooms: int):
print("Executing")
params = {
"locationIdentifier": "POSTCODE^4228216",
"channel": "BUY",
"page": str(page),
"numberOfPropertiesPerPage": "25",
"radius": "5.0",
"sortBy": "distance",
"includeUnavailableProperties": "false",
"propertyTypes": "flat",
"dontShow": "sharedOwnership,retirement",
"minPrice": "150000",
"maxPrice": "500000",
"minBedrooms": str(min_bedrooms),
"maxBedrooms": str(max_bedrooms),
"apiApplication": "ANDROID",
"appVersion": "3.70.0",
}
response = requests.get(
"https://api.rightmove.co.uk/api/property-listing",
params=params,
headers=headers,
verify=False,
)
if response.status_code != 200:
raise Exception("Failed due to: ", response.text)
return response.json()
if __name__ == "__main__":
response = listing_query(1, 2, 2)
resp = response
for d in resp["properties"]:
rl = RightmoveListing(
id=d["identifier"],
listing_json=d,
price=d["price"],
updated_timestamp=d["updateDate"],
)
rl.save()