55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
import requests
|
|
import json
|
|
|
|
APP_KEY = ""
|
|
APP_SECRET = ""
|
|
ACCESS_TOKEN = ""
|
|
URL_BASE = "https://openapi.koreainvestment.com:9443" #실전투자
|
|
|
|
# Auth
|
|
def auth():
|
|
headers = {"content-type":"application/json"}
|
|
body = {
|
|
"grant_type":"client_credentials",
|
|
"appkey":APP_KEY,
|
|
"appsecret":APP_SECRET
|
|
}
|
|
PATH = "oauth2/tokenP"
|
|
URL = f"{URL_BASE}/{PATH}"
|
|
res = requests.post(URL, headers=headers, data=json.dumps(body))
|
|
|
|
global ACCESS_TOKEN
|
|
ACCESS_TOKEN = res.json()["access_token"]
|
|
|
|
# 주식현재가 시세
|
|
def get_current_price(stock_no):
|
|
PATH = "uapi/domestic-stock/v1/quotations/inquire-price"
|
|
URL = f"{URL_BASE}/{PATH}"
|
|
|
|
# 헤더 설정
|
|
headers = {"Content-Type":"application/json",
|
|
"authorization": f"Bearer {ACCESS_TOKEN}",
|
|
"appKey":APP_KEY,
|
|
"appSecret":APP_SECRET,
|
|
"tr_id":"FHKST01010100"}
|
|
|
|
params = {
|
|
"fid_cond_mrkt_div_code":"J",
|
|
"fid_input_iscd": stock_no
|
|
}
|
|
|
|
# 호출
|
|
res = requests.get(URL, headers=headers, params=params)
|
|
|
|
if res.status_code == 200 and res.json()["rt_cd"] == "0" :
|
|
return(res.json())
|
|
# 토큰 만료 시
|
|
elif res.status_code == 200 and res.json()["msg_cd"] == "EGW00123" :
|
|
auth()
|
|
get_current_price(stock_no)
|
|
else:
|
|
print("Error Code : " + str(res.status_code) + " | " + res.text)
|
|
return None
|
|
|
|
get_current_price("005930")
|