from IPython.display import display
import requests
import json
import time 
import pandas as pd

endpoint = "https://api.search-inventory.toyota.com/graphql"

headers = {
	'authority': 'api.search-inventory.toyota.com',
	'content-type': 'application/json',
	'origin': 'https://www.toyota.com',
	'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"',
	'sec-ch-ua-mobile': '?0',
	'sec-ch-ua-platform': '"macOS"',
	'sec-fetch-dest': 'empty',
	'sec-fetch-mode': 'cors',
	'sec-fetch-site': 'same-site',
	'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
	'x-api-key': 'undefined',
	'x-cache-key': 'vehicles-98258-sienna-50',
    'Referer': 'https://www.toyota.com/'
}

query = """
query {
        locateVehiclesByZip(zipCode: "98258", brand: "TOYOTA", pageNo: 1, pageSize: 500, seriesCodes: "sienna", distance: 300, leadid: "9a9b95e9-e7a8-4991-a984-7560c93dd80c") {
          pagination {
            pageNo
            pageSize
            totalPages
            totalRecords
          }
          vehicleSummary {
            vin
            stockNum
            brand
            marketingSeries
            year
            isTempVin
            dealerCd
            dealerCategory
            distributorCd
            holdStatus
            weightRating
            isPreSold
            dealerMarketingName
            dealerWebsite
            isSmartPath
            distance
            isUnlockPriceDealer
            transmission {
              transmissionType
            }
            price {
              advertizedPrice
              nonSpAdvertizedPrice
              totalMsrp
              sellingPrice
              dph
              dioTotalMsrp
              dioTotalDealerSellingPrice
              dealerCashApplied
              baseMsrp
            }
            options {
              optionCd
              marketingName
              marketingLongName
              optionType
              packageInd
            }
            mpg {
              city
              highway
              combined
            }
            model {
              modelCd
              marketingName
              marketingTitle
            }
            media {
              type
              href
              imageTag
              source
            }
            intColor {
              colorCd
              colorSwatch
              marketingName
              nvsName
              colorFamilies
            }
            extColor {
              colorCd
              colorSwatch
              marketingName
              colorHexCd
              nvsName
              colorFamilies
            }
            eta {
              currFromDate
              currToDate
            }
            engine {
              engineCd
              name
            }
            drivetrain {
              code
              title
              bulletlist
            }
            family
            cab {
              code
              title
              bulletlist
            }
            bed {
              code
              title
              bulletlist
            }
          }
        }
      }

"""

response = requests.post(endpoint, headers=headers, json={'query': query})

# print(response.content)

data = json.loads(response.content)

vehicle_list = data['data']['locateVehiclesByZip']['vehicleSummary']

# returned_data = json.loads(response.content)

# filtered = [x for x in vehicle_list if not (x['model']['marketingName'] == 'Sienna LE')]

df = pd.json_normalize(vehicle_list)

# narrow = df[['vin', 'isPreSold', 'price.advertizedPrice', 'extColor.marketingName', 'model.marketingName', 'dealerMarketingName', 'dealerWebsite', 'distance']]
narrow = df[['vin', 'isPreSold', 'extColor.marketingName', 'model.marketingName', 'drivetrain.code', 'dealerMarketingName']]

# print(narrow.info())
# filtered = narrow
filtered = narrow[(narrow['model.marketingName'] == 'Sienna LE')]
# filtered = filtered[(filtered['isPreSold'] == False)]

display(filtered)
