import requests import time import os import csv import pandas as pd from ozon_data import headers # URL для первого и второго запроса url_list = "https://api-seller.ozon.ru/v2/supply-order/list" url_get = "https://api-seller.ozon.ru/v2/supply-order/get" url_bundle = "https://api-seller.ozon.ru/v1/supply-order/bundle" order_state = [ "ORDER_STATE_DATA_FILLING", ] try: response_list = requests.post( url_list, headers=headers, json={ "filter": {"states": order_state}, "paging": {"from_supply_order_id": 0, "limit": 100}, }, ) response_list.raise_for_status() data_list = response_list.json() # print("Результат первого запроса:") # print(data_list) order_ids = data_list.get("supply_order_id", []) if not order_ids: print(data_list) raise ValueError( "Не удалось получить supply_order_id из ответа первого запроса" ) # Второй запрос response_get = requests.post( url_get, headers=headers, json={"order_ids": order_ids} ) response_get.raise_for_status() # Проверка на ошибки data_get = response_get.json() # print("Результат второго запроса:") print(data_get) orders = data_get.get("orders", []) result = [] for order in orders: all_bundle_ids = [supply.get("bundle_id") for supply in order.get("supplies", [])] b_response = requests.post( url=url_bundle, json={"bundle_ids": all_bundle_ids, "limit": 100}, headers=headers, ) b_response.raise_for_status() b_result = b_response.json() for b in b_result.get('items'): result.append({ "supply_order_number": order.get("supply_order_number"), "creation_date": order.get("creation_date"), **b, }) time.sleep(0.3) df = pd.DataFrame(result) # print("Результат:", result) output_dir = "result" if not os.path.exists(output_dir): os.makedirs(output_dir) # Получаем имя текущего скрипта без расширения script_name = os.path.splitext(os.path.basename(__file__))[0] filename = '_'.join([script_name, *order_state]) csv_filename = os.path.join( output_dir, f"{filename}_output.csv" ) xls_filename = os.path.join( output_dir, f"{filename}_output.xlsx" ) df.to_csv(csv_filename, encoding="utf-8") df.to_excel(xls_filename) print(f"Данные успешно сохранены в {csv_filename}") except requests.exceptions.RequestException as e: print(f"Ошибка при выполнении запроса: {e}") except ValueError as e: print(f"Ошибка обработки данных: {e}")