diff --git a/fetch_tickets.py b/fetch_tickets.py index 9cf63b5..964e36c 100644 --- a/fetch_tickets.py +++ b/fetch_tickets.py @@ -1,8 +1,9 @@ #!/usr/bin/env python3 -"""Получение списка заявок из ServiceDesk Plus. Экспорт: Группа, Описание, Назначено, Категория в JSONL.""" +"""Получение списка заявок из ServiceDesk Plus. Экспорт: Группа, Описание, Назначено, Категория в JSONL/JSON/CSV.""" import requests import json +import csv import urllib3 from datetime import datetime from html import unescape @@ -86,7 +87,7 @@ def get_ticket_detail(ticket_id): except Exception as e: return {} -def list_tickets(from_date="2026-07-20"): +def list_tickets(from_date="2026-07-20", json_file=None, csv_file=None): url = f"{SERVER_URL}/api/v3/requests" headers = {"authtoken": API_KEY, "Accept": "application/vnd.manageengine.sdp.v3+json"} @@ -129,11 +130,39 @@ def list_tickets(from_date="2026-07-20"): "category": category }) + # Определяем путь для файлов по умолчанию (та же директория что и скрипт) + script_dir = os.path.dirname(os.path.abspath(__file__)) + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + + if json_file is None: + json_file = os.path.join(script_dir, f"tickets_{timestamp}.json") + if csv_file is None: + csv_file = os.path.join(script_dir, f"tickets_{timestamp}.csv") + + # Сохраняем JSON + with open(json_file, 'w', encoding='utf-8') as f: + json.dump(rows, f, ensure_ascii=False, indent=2) + print(f"LOG: JSON сохранён: {json_file}") + + # Сохраняем CSV + with open(csv_file, 'w', encoding='utf-8', newline='') as f: + writer = csv.DictWriter(f, fieldnames=["group", "description", "assignee", "category"]) + writer.writeheader() + writer.writerows(rows) + print(f"LOG: CSV сохранён: {csv_file}") + + # Выводим JSONL в консоль for row in rows: print(json.dumps(row, ensure_ascii=False)) print(f"LOG: Выведено {len(rows)} заявок", file=sys.stderr) if __name__ == "__main__": - from_date = sys.argv[1] if len(sys.argv) > 1 else "2026-07-20" - list_tickets(from_date) + import argparse + parser = argparse.ArgumentParser(description="Выгрузка заявок из ServiceDesk Plus") + parser.add_argument("--from", dest="from_date", default="2026-07-20", help="Дата начала (YYYY-MM-DD)") + parser.add_argument("--json", dest="json_file", default=None, help="Путь к JSON файлу") + parser.add_argument("--csv", dest="csv_file", default=None, help="Путь к CSV файлу") + args = parser.parse_args() + + list_tickets(from_date=args.from_date, json_file=args.json_file, csv_file=args.csv_file)