67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
import requests
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
BASE = "https://giantfood.com"
|
|
ACCOUNT_PAGE = f"{BASE}/account/history/invoice/in-store"
|
|
|
|
USER_ID = "369513017"
|
|
LOYALTY = "440155630880"
|
|
|
|
|
|
def get_session():
|
|
with sync_playwright() as p:
|
|
browser = p.firefox.launch(headless=False)
|
|
page = browser.new_page()
|
|
|
|
page.goto(ACCOUNT_PAGE)
|
|
|
|
print("log in manually in the browser, then press ENTER here")
|
|
input()
|
|
|
|
cookies = page.context.cookies()
|
|
ua = page.evaluate("() => navigator.userAgent")
|
|
|
|
browser.close()
|
|
|
|
s = requests.Session()
|
|
|
|
s.headers.update({
|
|
"user-agent": ua,
|
|
"accept": "application/json, text/plain, */*",
|
|
"referer": ACCOUNT_PAGE,
|
|
})
|
|
|
|
for c in cookies:
|
|
domain = c.get("domain", "").lstrip(".") or "giantfood.com"
|
|
s.cookies.set(c["name"], c["value"], domain=domain)
|
|
|
|
return s
|
|
|
|
|
|
def test_history(session):
|
|
url = f"{BASE}/api/v6.0/user/{USER_ID}/order/history"
|
|
|
|
r = session.get(
|
|
url,
|
|
params={
|
|
"filter": "instore",
|
|
"loyaltyNumber": LOYALTY,
|
|
},
|
|
)
|
|
|
|
print("status:", r.status_code)
|
|
print()
|
|
|
|
data = r.json()
|
|
|
|
print("orders found:", len(data.get("records", [])))
|
|
print()
|
|
|
|
for rec in data.get("records", [])[:5]:
|
|
print(rec["orderId"], rec["orderDate"], rec["orderTotal"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
session = get_session()
|
|
test_history(session)
|