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()