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