import pickle import cachetools from diskcache import Cache import requests from 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()