export script
This commit is contained in:
56
import_requests.py
Normal file
56
import_requests.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import requests
|
||||
import csv
|
||||
import time
|
||||
|
||||
API_URL = "https://www.sereiaguardia.com.br/web_api/orders/:orderId/complete?access_token=APP_ID-6197-STORE_ID-1018776-7a249468d35d27e5b151a11228bc88a1d2db55edb59b4a6477ec9b04e7aa703c"
|
||||
OUTPUT_CSV = "orders.csv"
|
||||
RATE_LIMIT_SECONDS = 0.5 # 60 req/min = 1 req/sec
|
||||
|
||||
# Optional authentication
|
||||
HEADERS = {
|
||||
# "Authorization": "Bearer TOKEN",
|
||||
# "Accept": "application/json"
|
||||
}
|
||||
|
||||
def fetch_order(order_id):
|
||||
"""Fetch a single order."""
|
||||
url = API_URL.replace(":orderId", str(order_id))
|
||||
response = requests.get(url, headers=HEADERS, timeout=10)
|
||||
response.raise_for_status() # will throw if request fails
|
||||
return response.json()
|
||||
|
||||
def main():
|
||||
# Create CSV file and write headers after fetching first row
|
||||
first_row_written = False
|
||||
|
||||
with open(OUTPUT_CSV, mode="w", newline="", encoding="utf-8") as file:
|
||||
writer = None
|
||||
|
||||
for order_id in range(1, 2001):
|
||||
try:
|
||||
data = fetch_order(order_id)
|
||||
|
||||
# Create the CSV writer and header dynamically from the JSON keys
|
||||
if not first_row_written:
|
||||
fieldnames = data.keys()
|
||||
writer = csv.DictWriter(file, fieldnames=fieldnames)
|
||||
writer.writeheader()
|
||||
first_row_written = True
|
||||
|
||||
# Write the row
|
||||
writer.writerow(data)
|
||||
|
||||
print(f"Saved order {order_id}")
|
||||
|
||||
except requests.exceptions.HTTPError as err:
|
||||
print(f"HTTP error for order {order_id}: {err}")
|
||||
except Exception as err:
|
||||
print(f"Error for order {order_id}: {err}")
|
||||
|
||||
# Respect rate limit
|
||||
time.sleep(RATE_LIMIT_SECONDS)
|
||||
|
||||
print("Done!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user