60 lines
1.6 KiB
Python
60 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()
|