71 lines
1.6 KiB
Python
71 lines
1.6 KiB
Python
# app/scripts/get_ticker_24hr.py
|
||
|
||
from __future__ import annotations
|
||
|
||
import argparse
|
||
import json
|
||
import sys
|
||
|
||
from src.core.config import load_settings
|
||
from src.integrations.exchange.rest_client import ExchangeRestClient
|
||
|
||
|
||
def parse_args() -> argparse.Namespace:
|
||
settings = load_settings()
|
||
|
||
parser = argparse.ArgumentParser(
|
||
description="Получить реальный ответ Dzengi ticker/24hr.",
|
||
)
|
||
parser.add_argument(
|
||
"symbol",
|
||
nargs="?",
|
||
default=settings.default_symbol,
|
||
help=(
|
||
"Торговый символ. "
|
||
f"По умолчанию: {settings.default_symbol}"
|
||
),
|
||
)
|
||
|
||
return parser.parse_args()
|
||
|
||
|
||
def main() -> int:
|
||
args = parse_args()
|
||
symbol = str(args.symbol).strip()
|
||
|
||
if not symbol:
|
||
print(
|
||
"Торговый символ не должен быть пустым.",
|
||
file=sys.stderr,
|
||
)
|
||
return 2
|
||
|
||
try:
|
||
payload = ExchangeRestClient().get_json(
|
||
"/api/v1/ticker/24hr",
|
||
params={
|
||
"symbol": symbol,
|
||
},
|
||
)
|
||
except Exception as exc:
|
||
print(
|
||
f"Не удалось получить ticker/24hr для {symbol}: "
|
||
f"{type(exc).__name__}: {exc}",
|
||
file=sys.stderr,
|
||
)
|
||
return 1
|
||
|
||
print(
|
||
json.dumps(
|
||
payload,
|
||
ensure_ascii=False,
|
||
indent=2,
|
||
sort_keys=True,
|
||
)
|
||
)
|
||
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
raise SystemExit(main()) |