69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
||
"""Create geo alarm registrations for every eligible row in a CSV file."""
|
||
|
||
from __future__ import annotations
|
||
|
||
import argparse
|
||
import logging
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
from common import ApiError, ConfigurationError, IklimClient, configure_logging
|
||
from geo_alarm import CsvRegistrationProcessor, GeoAlarmService
|
||
|
||
|
||
BASE_DIR = Path(__file__).resolve().parent
|
||
|
||
|
||
def parse_args() -> argparse.Namespace:
|
||
parser = argparse.ArgumentParser(
|
||
description="CSV satırlarından iklim.co coğrafi alarm kayıtları oluşturur."
|
||
)
|
||
parser.add_argument("csv_file", type=Path, help="İşlenecek noktalı virgüllü CSV")
|
||
parser.add_argument(
|
||
"--webhook-config",
|
||
type=Path,
|
||
default=BASE_DIR / "webhook.json",
|
||
help="Webhook JSON dosyası (varsayılan: webhook.json)",
|
||
)
|
||
parser.add_argument(
|
||
"--nowcast-filter-config",
|
||
type=Path,
|
||
default=BASE_DIR / "nowcast-geo-alarm-filter.json",
|
||
help=(
|
||
"Nowcast geo alarm filter JSON dosyası "
|
||
"(varsayılan: nowcast-geo-alarm-filter.json)"
|
||
),
|
||
)
|
||
parser.add_argument(
|
||
"--debug-log",
|
||
type=Path,
|
||
default=BASE_DIR / "logs" / "iklim-api-debug.log",
|
||
help="Maskelenmiş HTTP debug log dosyası",
|
||
)
|
||
return parser.parse_args()
|
||
|
||
|
||
def main() -> int:
|
||
args = parse_args()
|
||
configure_logging(args.debug_log)
|
||
try:
|
||
client = IklimClient.from_env(BASE_DIR / ".env")
|
||
processor = CsvRegistrationProcessor(
|
||
GeoAlarmService(client),
|
||
csv_path=args.csv_file,
|
||
webhook_config_path=args.webhook_config,
|
||
nowcast_filter_config_path=args.nowcast_filter_config,
|
||
)
|
||
processor.run()
|
||
except (ConfigurationError, ApiError, OSError) as exc:
|
||
logging.error("İşlem durduruldu: %s", exc)
|
||
return 1
|
||
|
||
logging.info("CSV işlemi tamamlandı: %s", args.csv_file.resolve())
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|