내장 함수 추가

자훈·2023년 9월 8일
0

개인프로젝트

목록 보기
3/10

저장된 사용자 정보 이용하기

사용자 인풋

def match_review(summoner_name):
    #원하는 경기 수 id 불러오기 
    print("원하시는 매치 타입 번호와 매치 수를 입력해주세요.")
    order_match = int(input("1. 솔로랭크 , 2. 자유랭크 \n매치타입: "))
    order_games = int(input("매치 수: "))

    if order_match == 1:
        match_type = 420 #솔로랭크 엔드포인트
    else:
        match_type = 440 #자유랭크 엔드포인트 
        

솔로랭크를 불러오는 값에 대한 데이터는 찾기가 힘들었습니다. 혹여나 찾는데 어려움을 계시다면 여기있는 것을 그대로 쓰시면 될 것 같습니다. 사용자가 원하는 타입에 맞춰 프로그램이 작동하도록 기본적인 구현을 하였습니다.

접근 기초


   conn = sqlite3.connect("lol.db")
   cursor = conn.cursor()
   cursor.execute('SELECT puuid FROM summoners WHERE name=?',(summoner_name,))
   existing_data = cursor.fetchone() #튜플형식으로 반환 보통 요솟값 접근 [0]

   #description은 열 이름 및 기타 열 속성 정보 포함 리스트
   #리스트 컴프리헨션으로 description에서 열 이름 추출
   #zip을 통해 (열 이름, 튜플) 매핑. 열이름 키값, 벨류는 해당 열의 값 

데이터 베이스에 연결하여 커서를 생성하고, 소환사 닉네임을 통해 해당 소환사의 db값에 접근하여, puuid를 추출해낼 예정입니다. 이전의 코드에서 puuid는 소환사명 입력시 자동으로 저장이 되어있는 상태입니다.

동작설명

    column_names = [desc[0] for desc in cursor.description]
    result_dict = dict(zip(column_names, existing_data))
    summoner_puuid = result_dict['puuid'] 

    match_url = (f'https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/{summoner_puuid}/'
                 f'ids?queue={match_type}&type=ranked&start=0&count={order_games}&api_key={api_key}')
    
    response = requests.get(match_url)
    print(f"{response.status_code}")

    if response.status_code == 200:
        summoner_match = response.json()
        df = pd.DataFrame(summoner_match)
        print(f"입력하신 정보입니다.\n{tabulate(df, headers='keys', tablefmt='pretty')}")
        conn.close()
    else:
        print("프로그램이 동작하지 못하고 있습니다. 오류")
        conn.close()
        return None 

column_names는 리스트 컴프리헨션으로 간략하게 구현하여, 열 이름 및 기타 열 속성 정보가 저장되어 있는 description에서 열 이름을 추출하여 zip을 통해 열 이름과 튜플을 매핑합니다. summoner_puuid에서는 매핑된 값에 키값을 통하여 다시 호출합니다.

match url 형식은 apis에 값을 대입하면 얻을 수 있습니다. 각 고유값이 들어가야 하는 부분들을 잘 체크해야 오류가 나지 않습니다. status_code를 반환받는 이유는 혹시나 생기는 오류를 확인하기 위해서 입니다.

실행 값이 200인, 문제 없는 코드를 반환 받는다면, 데이터프레임을 보다 보기좋은 형식으로 반환하고, db를 닫습니다. 만약 오류가 난다면, 오류가나는 이유를 설명하고 데이터베이스를 닫도록 만들었습니다.

0개의 댓글