추천로직
This commit is contained in:
54
backend/test_krx.py
Normal file
54
backend/test_krx.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import os
|
||||
import sys
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv(Path(__file__).parent.parent / ".env")
|
||||
AUTH_KEY = os.environ.get("KRX_API_KEY", "")
|
||||
if not AUTH_KEY:
|
||||
print("❌ KRX_API_KEY가 .env에 설정되지 않았습니다.")
|
||||
sys.exit(1)
|
||||
|
||||
print("=== KRX OTP 테스트 ===")
|
||||
|
||||
# Step 1: OTP 발급
|
||||
otp_params = {
|
||||
"bld": "dbms/MDC/STAT/standard/MDCSTAT02301",
|
||||
"name": "fileDown",
|
||||
"filetype": "json",
|
||||
"url": "dbms/MDC/STAT/standard/MDCSTAT02301",
|
||||
"trdDd": "20260304",
|
||||
"AUTH_KEY": AUTH_KEY
|
||||
}
|
||||
|
||||
print("OTP 요청 중...")
|
||||
otp_res = requests.post(
|
||||
"https://openapi.krx.co.kr/contents/COM/GenerateOTP.cmd",
|
||||
data=otp_params
|
||||
)
|
||||
print(f"OTP 상태코드: {otp_res.status_code}")
|
||||
print(f"OTP 응답 전체: [{otp_res.text}]")
|
||||
|
||||
if otp_res.status_code != 200 or not otp_res.text.strip():
|
||||
print("❌ OTP 발급 실패 — 여기서 중단")
|
||||
exit(1)
|
||||
|
||||
# Step 2: 데이터 요청
|
||||
print("\n데이터 요청 중...")
|
||||
data_res = requests.post(
|
||||
"https://openapi.krx.co.kr/contents/COM/GetData.cmd",
|
||||
data={"code": otp_res.text}
|
||||
)
|
||||
print(f"데이터 상태코드: {data_res.status_code}")
|
||||
|
||||
try:
|
||||
data = data_res.json()
|
||||
items = data.get("OutBlock_1") or data.get("output") or []
|
||||
print(f"✅ 종목 수: {len(items)}개")
|
||||
if items:
|
||||
print(f"첫 번째 항목 키: {list(items[0].keys())}")
|
||||
print(f"첫 번째 종목: {items[0]}")
|
||||
except Exception as e:
|
||||
print(f"❌ JSON 파싱 실패: {e}")
|
||||
print(f"응답 내용: {data_res.text[:500]}")
|
||||
Reference in New Issue
Block a user