haikal/scripts/carapi.py
2025-06-22 13:25:54 +03:00

73 lines
2.8 KiB
Python

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)