73 lines
2.8 KiB
Python
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)
|