import os import requests import pandas as pd from datetime import datetime from dateutil.relativedelta import relativedelta from ozon_data import headers # URL API url = "https://api-seller.ozon.ru/v2/posting/fbo/list" # Параметры для месяца year = 2025 # Укажите нужный месяц (1-12) month = 1 # Определение первого и последнего дня месяца first_day = datetime(year, month, 1) # Первый день месяца last_day = first_day + relativedelta( months=1, days=-1 ) # Последний день текущего месяца # Формируем строки дат в ISO формате since = first_day.isoformat() + "Z" # Формат: 2025-01-01T00:00:00Z to = last_day.isoformat() + "Z" # Формат: 2025-01-31T23:59:59.999Z # Тело запроса payload = { "dir": "ASC", "filter": { "since": since, # "status": "delivered", "to": to, }, # Укажите статус, если нужно "limit": 1000, "offset": 0, "with": {"analytics_data": True, "financial_data": True}, } print(payload) try: # Выполнение запроса response = requests.post(url, headers=headers, json=payload) response.raise_for_status() data_raw = response.json() # Составляем таблицу data = [] for order in data_raw["result"]: for product in order["products"]: product_id = product["sku"] financial = [ i for i in order["financial_data"]["products"] if i["product_id"] == product_id ] financial = financial[0] row = { "order_id": order["order_id"], "order_number": order["order_number"], "status": order["status"], "created_at": order["created_at"], "product_sku": product["sku"], "product_name": product["name"], "offer_id": product["offer_id"], "quantity": product["quantity"], "price": financial["price"], "commission_amount": financial["commission_amount"], "payout": financial["payout"], "warehouse": order["analytics_data"]["warehouse_name"], } data.append(row) # Преобразуем в DataFrame df = pd.DataFrame(data) output_dir = "result" if not os.path.exists(output_dir): os.makedirs(output_dir) # Получаем имя текущего скрипта без расширения script_name = os.path.splitext(os.path.basename(__file__))[0] # Указываем полный путь для файла csv_filename = os.path.join( output_dir, f"{'_'.join([script_name, str(month), str(year)])}_output.csv" ) xls_filename = os.path.join( output_dir, f"{'_'.join([script_name, str(month), str(year)])}_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 Exception as e: print(f"Произошла ошибка: {e}")