haikal/scripts/carapi.py
Marwan Alwali fe00d0d364 update
2025-01-28 15:27:11 +03:00

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)