컴퓨터/Python

ebest 01

풍경소리^^ 2021. 1. 3. 20:21
import win32com.client
import pythoncom
import os, sys
import pandas as pd
class XASessionEvents:
    상태 = False
    def OnLogin(self, code, msg):
        print("OnLogin : ", code, msg)
        XASessionEvents.상태 = True
    def OnLogout(self):
        print('--------------------')
        pass
    def OnDisconnect(self):
        print('=====================')
        pass
def Login(url='demo.ebestsec.co.kr', port=200001, svrtype=0, id='userid', pwd='password', cert='공인인증 비밀번호'):
    session = win32com.client.DispatchWithEvents("XA_Session.XASession", XASessionEvents)
    session.SetMode("_XINGAPI7_", "TRUE")
    result = session.ConnectServer(url, port)
    if not result:
        nErrCode = session.GetLastError()
        strErrMsg = session.GetErrorMessage(nErrCode)
        return (False, nErrCode, strErrMsg, None, session)
    session.Login(id, pwd, cert, svrtype, 0)
    while XASessionEvents.상태 == False:
        pythoncom.PumpWaitingMessages()
    계좌 = []
    계좌수 = session.GetAccountListCount()
    for i in range(계좌수):
        계좌.append(session.GetAccountList(i))
    return (True, 0, "OK", 계좌, session)
if __name__ == "__main__":
    계좌정보 = pd.read_csv("secret/passwords.csv", converters={'계좌번호': str, '거래비밀번호': str})
    주식계좌정보 = 계좌정보.query("구분 == '거래'")
    if len(주식계좌정보) > 0:
        계좌번호 = 주식계좌정보['계좌번호'].values[0].strip()
        id = 주식계좌정보['사용자ID'].values[0].strip()
        pwd = 주식계좌정보['비밀번호'].values[0].strip()
        cert = 주식계좌정보['공인인증비밀번호'][0].strip()
        거래비밀번호 = 주식계좌정보['거래비밀번호'].values[0].strip()
        # print("계좌번호 : " + 계좌번호)
        # print("사용자ID : " + id)
        # print("비밀번호 : " + pwd)
        # print("공인인증비밀번호 : " + cert)
        url = 주식계좌정보['url'][0].strip()
        result, code, msg, 계좌, session = Login(url=url, port=200001, svrtype=0, id=id, pwd=pwd, cert=cert)
        if result == False:
            sys.exit(0)
        for i in 계좌:
            print(i)
    else:
        print("secret디렉토리의 passwords.csv 파일에서 거래 계좌를 지정해 주세요")