파이썬, 블리자드 디아블로3 API 이용하기!

2021. 9. 12. 10:10

파이썬을 책으로 공부하는 것은 정말 지루하다. 그래서 항상 뭔가 재미있고 색다른 방법을 찾게 된다. 그 중에 가장 관심이 있는 영억은 게임이다. 많은 사람들이 게임을 좋아하고 게임은 중독성이 있기 때문이다. 게임과 관련된 컨텐츠가 파이썬을 배우기 시작하는 데 도움이 될 것이라고 생각한다. 하지만 아직 '정말 이거다!'라고 생각되는 것은 만나지 못했다.

오늘은 파이썬으로 블리자드 디아블로3 API를 이용하는 방법에 대해서 알아보도록 하겠다.

 

 

디아블로

 

 

API를 활용하기 위해서는 먼저 계정을 만들어야 한다. 블리자드에 관심이 있다면 이 계정은 있을 것이다. 그러면 API 이용 동의만 하면 된다.

 

1.API 활용을 위한 계정 만들기

디아블로3 API를 이용하기 위해서는 블리자드에 계정을 만들어야 한다. 아래 싸이트로 들어가서 우측 상단의 [My Account]를 선택하고 [Create a Free Account]를 클릭한다. 그러면 계정을 만들 수 있다.
( 참조: 블리자드 계정 만들러 가기 )

 

 

다음으로 보안 강화를 위해 BLIZZARD AUTHENTICATOR를 설치해야 한다. 로그인을 위한 앱인데, 과거에는 없던 절차이다. 아마도 아이디를 도용하는 경우가 많아서 보안강화를 위해 만든 듯 하다.

 

 

한국어로는 '블리자드 인증기'라고 불린다

 

 

블리자드 계정이 있다면 여기서부터 해도 된다. 상단의 메뉴 중에 API ACEESS를 클릭한다. 그러면 API 이용 동의서가 나온다. 여기서 ACCEPT를 클릭합니다. 당연한 애기지만 거부를 클릭하면 사용할 수가 없다. ACCEPT를 클릭하고 나면 아래와 같이 연결이 완료되었다는 메시지가 나온다.

 

 

연결 완료

 

 

이제 'Create New Client'버튼을 클릭해, Client를 생성한다. Redirect URIs는 값을 입력하지 않아도 등록이 된다. 나중에 로그인 관련 기능을 이용할 때 키값이 여기에 등록된 URI로 회신되는 듯 하다. 데이터를 수집하는 데 API를 사용할 예정이라 URI는 등록하지 않았다.

Client를 생성하면 나오는 Client ID와 Client Secret은 잘 기억해두자. 이후에 API를 사용할 때 필요하기 때문이다.

 

 

2. 이제 API를 사용해보자.

블리자드의 API는 사용하기가 쉽다. 보통은 API를 사용할 때 주소를 만들기가 까다로운데, 블리자드에서는 친절하게 예정를 다 제공해주고 있다. 이 예제를 가지고 필요한 부분만 바꾸면 된다.

아래 블리자드 API싸이트에 접속하면 디아블로3 관련해서 사용할 수 있는 API는 총 2가지가 있다. 하나는 Community API라고 해서 디아블로 게임 관련 데이터를 받을 수 있는 API가 있고, Game Data API라고 해서 시즌과 eras의 정보와 리더보드를 수집할 수 있는 API가 있다.

그 중에 하나인 getCharaterClass를 이용해보도록 하자. 해당 API를 클릭하면 아래와 같이 하단에 'Try It'이라는 버튼을 볼 수 있다. 이 버튼을 클릭하면 API를 사용할 수 있는 URL을 만들어 주고 테스트를 해볼 수 있다.

 

디아블로 getCharacterClass

 

 

'Try It'버튼을 클릭하면, REQUEST URL이라는 항목에 ACEESS TOKEN과 함께 URL이 생성된다. 이 URL을 이용해서 아래와 같이 코드를 작성하면 해당 데이터를 수집할 수 있다. 

# -*- coding: utf-8 -*-

from urllib.request import urlopen
import json
import pandas as pd
import seaborn as sns
 
pd.set_option("display.max_columns",30)
 
# getCharacterClass
url = "https://us.api.blizzard.com/d3/data/hero/barbarian?locale=en_US&access_token=(자신의 Access 토큰을 넣습니다.)"
 
result = urlopen(url)
result_html = result.read()
temp = json.loads(result_html)
 
df1 = pd.DataFrame(temp["skillCategories"])
df_active = pd.DataFrame(temp["skills"]["active"])
df_passive = pd.DataFrame(temp["skills"]["passive"])
 
df_active.head()
df_passive.head()

 

해당 URL로 값을 요청하면 JSON 데이터 포맷으로 회신이 온다. JSON은 키와 값으로 이루어진 데이터 포맷이다. 이 데이터를 확인해보면 스킬과 관련하여 active와 passive 2개의 데이터를 확인할 수 있다. 코드에 대한 자세한 내용은 이전에 다루었기 때문에 생략하도록 하겠다. active 테이블의 상위 3개 행만 뽑아보면 아래와 같다.

디아블로 active 데이터

 

 

이 외에도 여러가지 디아블로 게임에 대한 데이터를 제공해주는 API가 있다. 디아블로를 플레이하지 않아서 위의 데이터를 어떻게 잘 활용할 수 있을지에 대한 감은 오지 않는다.


오늘은 이렇게 파이썬으로 블리자드 디아블로3 API를 이용해 보았다. 데이터 관련 API는 몇 번 사용해보면 구조가 간단하여 사용하기 어렵지 않다. 거기에 친절하게 예제가 잘 되어 있어 쉽게 사용할 수 있었다. 디아블로를 좋아한다면 해당 API를 이용해서 알고 싶은 정보들을 확인해보는 것도 좋을 듯 하다.

댓글()
  1. 양국남자 2021.09.15 01:46 댓글주소  수정/삭제  댓글쓰기

    이거 꽤 괜찮은데요? 흥미로운 아이디어는 언제나 좋습니다.

    물론 폭풍설사 유한공사는 naver....