Files
set50-system/backend/scripts/collect_prices.py
2026-08-23 12:38:17 +07:00

43 lines
1.5 KiB
Python

"""Collect one daily SET price snapshot from Yahoo Finance Chart API."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from app.prices import YahooChartProvider, collect_price_snapshot
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--root", type=Path, default=Path(__file__).resolve().parents[1] / "data" / "prices")
parser.add_argument("--start", required=True, help="inclusive YYYY-MM-DD")
parser.add_argument("--end", required=True, help="inclusive YYYY-MM-DD")
parser.add_argument("--timeout", type=float, default=30.0)
args = parser.parse_args()
snapshot = collect_price_snapshot(args.root, start=args.start, end=args.end, provider=YahooChartProvider(timeout=args.timeout))
source = snapshot["source"]
print(
json.dumps(
{
"snapshot_id": source["snapshot_id"],
"source_id": source["source_id"],
"period_start": source["period_start"],
"period_end": source["period_end"],
"symbols": sorted(snapshot["series"]),
"bar_counts": source["bar_counts"],
"quality": source["quality"],
"point_in_time": source["point_in_time"],
"snapshot_root": str(args.root),
},
ensure_ascii=False,
sort_keys=True,
)
)
return 0
if __name__ == "__main__":
raise SystemExit(main())