import requests
import csv

# Replace with your actual API token and secret key
API_TOKEN = 'f5204a00-6f31-4de2-96d8-ed998e0d230c'
SECRET_KEY = 'ae430502a5c66e818d9722919c8b5584'
BASE_URL = 'https://carapi.app/api/v1'


def fetch_and_save_car_makes_models(api_url, headers, output_csv):
    TRANSLATION = []
    page = 1
    pages_per_batch = 1

    while True:
        responses = []
        # Fetch 100 pages in one batch
        for i in range(pages_per_batch):
            current_page = page + i
            response = requests.get(f"{api_url}&page={current_page}", headers=headers)
            if response.status_code == 200 and page < 100:
                responses.append(response.json())
            else:
                break

        # Process the batch of responses
        for data in responses:
            if 'data' not in data:
                continue

            for item in data['data']:
                make_name = item['make_model']['make']['name']
                model_name = item['make_model']['name']

                # Create dictionary for each make and model combination
                translation_entry = {
                    'make': f"{make_name} ",
                    'model': f"{model_name} "  # Replace with actual Arabic translation if available
                }
                TRANSLATION.append(translation_entry)

        # Increment the page number for the next batch
        page += pages_per_batch

        # Check if there are more pages to fetch
        if not responses or ('next' in responses[-1]['collection'] and not responses[-1]['collection']['next']):
            break

    # Save the TRANSLATION data to a CSV file
    with open(output_csv, 'w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ['make', 'model']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for entry in TRANSLATION:
            writer.writerow(entry)

    print(f"Data saved to {output_csv}")


# Example usage:
api_url = "https://carapi.app/api/trims?sort=make_model_id&direction=asc&verbose=yes"
headers = {
    'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjYXJhcGkuYXBwIiwic3ViIjoiYjU1OGYzMDMtODI0Ni00NjgzLTkwYTQtZmYwMGQxYWNmNGU3IiwiYXVkIjoiYjU1OGYzMDMtODI0Ni00NjgzLTkwYTQtZmYwMGQxYWNmNGU3IiwiZXhwIjoxNzIzNzMxODMyLCJpYXQiOjE3MjMxMjcwMzIsImp0aSI6IjNkMGJhMzA4LWUzZTAtNGJhZC1iZmMxLTBiMDA3YzNmMmE2NSIsInVzZXIiOnsic3Vic2NyaWJlZCI6dHJ1ZSwic3Vic2NyaXB0aW9uIjoic3RhcnRlciIsInJhdGVfbGltaXRfdHlwZSI6ImhhcmQiLCJhZGRvbnMiOnsiYW50aXF1ZV92ZWhpY2xlcyI6ZmFsc2UsImRhdGFfZmVlZCI6ZmFsc2V9fX0.t__L53yN0OndnOP3_YxaAbrwgQXSYwVUgEqE1IwH8Nk',  # Replace with actual token
    'Content-Type': 'application/json'
}
output_csv = 'car_makes_models.csv'

fetch_and_save_car_makes_models(api_url, headers, output_csv)
