import os

import bs4
import dotenv
import httpx


dotenv.load_dotenv()

token = os.environ.get("MASSIVE_TOKEN", "")

api = "https://render.joinmassive.com/browser"

headers = {
    "Authorization": f"Bearer {token}",
}
params = {
    "url": "https://www.autotrader.com/",
    "format": "rendered",
    "country": "US",
}

response = httpx.get(api, headers=headers, params=params, timeout=60)
response.raise_for_status()

soup = bs4.BeautifulSoup(response.text, "html.parser")

cards = soup.select(
    '[data-cmp="inventoryListing"], '
    '[data-testid="vehicle-card"], '
    '[data-testid="listing-card"], '
    'div[class*="inventory-listing"], '
    'div[class*="vehicle-card"]'
)

if not cards:
    cards = [
        link.find_parent("div")
        for link in soup.select(
            'a[href*="/cars-for-sale/vehicle"], '
            'a[href*="/cars-for-sale/vehicledetails"]'
        )
    ]

seen = set()

for card in cards:
    if card is None:
        continue

    lines = [
        line.strip()
        for line in card.get_text("\n", strip=True).splitlines()
        if line.strip()
    ]
    details = "\n".join(lines[:10])

    if not details or details in seen:
        continue

    seen.add(details)
    print(details)
    print()
