import os import json import requests import requests import urllib.parse import json from easydict import EasyDict as edict from fastapi import FastAPI, File, UploadFile, Form from Zillow_Scraper.selenium_wrapper import search API_token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1eG42aWVkcXlwMmtzbGVnZms2N3pmN3kyN2MzMTBsaSIsImlzcyI6ImRhdGFmaW5pdGkuY28ifQ.fwFM5-Z5ZMPwqbRuiyQhcQP9NjMqP-sm-EZ7W3BA2NnfqN6p0_Kapz6pr2tMGlZ7ranZ1DVb_gScmtPm8R_F6JpJ5dKNL7rZamUwR84TzxNPzOAns7UgjMSx-5p-7f9U2_NGg3ORveaQTfs1-QH9uiDw4v6U91lhD4rReXVgom5qhNlSbmHkj81DHVHaX969hPDtdEiQ5tspib3xgwWDyXYQYGcwPFoLIHET9srNP7zKWyghbiwh90DTnj3ASmYFO3Nrj8zdfXmkCkUXa1vwEf69qKD8T2L8-OsZlMn-t8X7uYyi_pFP4v78N_6SgfX1t8csRUqlymkFX-gVnqeDsPivSXvQrz9Su68g2HlMyOrutpdc7i6z3OCy8zt3HET_LMw4ccKHYeNxHJLf572ALRHvLVxWJTtEVPyqZ_IXHSHdhpk5jGvxSaW_T9ufmmeNfuLdDnOm_T1VhnXMI6-iAYDsWidSSzhQkrle8XcptRbyRyilMzU37BCd4klUiuVoMNJrBhIQEM9vgDEH8BfJHHOha3dCxWj0pKzlv4SHXokTlBVNDWg_vZFobylTOzsi0055PgenV-qiACzZpbFylTP0egdVKrxxfuOYe8fhzi61cwoaZ9YUqOspYRGsm_wRCwc3daS8SEvaEl1tXoRTpKsxe5kI6u7AVubqmhhI1LA' # eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1MzRmanRmdmZwNnplcmJldHEzcnpienExZ2l6b201dyIsImlzcyI6ImRhdGFmaW5pdGkuY28ifQ.CONEaG0VEABopROdGvMWy3sBv0X8dB2rAUhijXEKRdRgAbII-zbX6FIZsV7pZ72M5BbaREhjOi9eU-5NKpvhiWnU8cjlrx0AmHRNrIBrHmPvoFE9IFeIN1pYS9nOvU6CctQB6ZvmoEMpF_VYVKwkBkmUNmY1UPF6TdINkdWg9ym0pC1TIhch4WM5akuHwlJXirzbV07SRrijnQUT1DRpt7_igbwRSt8smFUWejFDJnbxAaMeqsLHo7Trb3FgkBLAEHDdA7CgG2HONsAvOEKnf7hwpp3_mfziZ_uYO369wbfxkYIn6WnMqHYjjC6viD0b5zZI-hjZgT-87CUetWj3Oqs_B37JzqiHm0rxRHxlfFP_IvpqS263tjdnMgSUmsETy62W_cXAuk_Wn45nGiPfM26HclcZxBieYuCOFNojdZE-1apMehtXAgN0JEN29y5JZGBoSPHPZQKfvfAGEHlh-Ty3yZRiiPaQ2m4BLilZN2bB_tA0c8s7RXeHWph_t_GH5xoLO0PB_fZa_RrUmg-Cc2wsjTr59rYH-uGWpfhE-7Qa1du1tZYE4PpRqTq7KysAZzfuAgkhpJzpXwDAnuEsRDSGdhbteKnRIKajiEw8jt9KW0OnXEDOxx_cU9YrPmDvJIdvQjKKYz1Tuptce7ZmxXaHYoOtzN1I1aKpGQe1UJw format = 'JSON' # query = 'country:US AND numRoom:3 AND numFloor:1 AND postalCode:75231 AND "prices":{"amountMax": 289000}' download = False request_headers = { 'Authorization': 'Bearer ' + API_token, 'Content-Type': 'application/json', } def send_request (budget,zip_code): # query = "country:US AND numRoom:3 AND numFloor:1 AND postalCode:75231 AND {prices.amountMin:>=100} AND {prices.amountMax:<={param}} AND {prices.currency:USD} " query = "country:US AND numRoom:3 AND numFloor:1 AND postalCode:"+f"{zip_code}"+" AND {prices.amountMin:>=100} AND {prices.amountMax:<="+ f"{budget}"+"} AND {prices.currency:USD} " num_records = 7 request_data = { 'query': query, 'format': format, 'num_records': num_records, 'download': download, } # Make the API call. r = requests.post('https://api.datafiniti.co/v4/properties/search',json=request_data,headers=request_headers) if r.status_code == 200: out_data = json.loads(r.content.decode('utf8').replace('"', '\"')) print("Founded result: ",out_data['num_found']) return out_data['num_found'],out_data['records'] else: print('Request failed') return None,None # _,o = send_request (8000000,19701) # print(o) def send_zillow_request (budget,zip_code): inf = search(zipcode=zip_code, budget=budget, for_sale = "rent") return 1, inf # r = requests.post('https://api.datafiniti.co/v4/properties/search',json=request_data,headers=request_headers) # if r.status_code == 200: # out_data = json.loads(r.content.decode('utf8').replace('"', '\"')) # print("Founded result: ",out_data['num_found']) # return out_data['num_found'],out_data['records'] # else: # print('Request failed') # return None,None # ## 1. Health Check # url = "https://api.datafiniti.co/v4/health" # response = requests.request("GET", url, headers=[]) # print(response.text) # ## 2. Authentication # url = "https://api.datafiniti.co/v4/auth" # header= {"key": "Content-Type", # "name": "Content-Type", # "type": "text", # "value": "application/json" # } # # payload = json.dumps({ # body = {"mode": "raw","raw": "{\n\t\"email\": \"ar@playpingpong.co\",\n\t\"password\": \"p@ssWord123\"\n\t\n}"} # response = requests.request("POST", url, headers=header, data=body) # print(response.text) # query = "country:US AND numRoom:3 AND numFloor:1 AND postalCode:75231 AND {prices.amountMin:>=100} AND {prices.amountMax:<= "+ f"{param}"+ "} AND {prices.currency:USD} "