하스스톤 API 파이썬으로 이용하기!

목차

    2018. 12. 29. 06:30

    예전에 재미있게 플레이 했던 게임 중에 하스스톤이라는 게임이 있다. 하스스톤은 블리자드에서 만든 카드 게임으로, 전략을 짜고 카드를 조합하여 상대방과 겨루는 게임이다. 하스스톤은 생각보다 인기가 많아, 2018년 아시안 게임의 한 종목으로 채택되었다. 기본이 워크래프트의 세계관이라 쉽고 익숙하게 게임을 즐길 수 있다.

    오늘은 하스스톤의 API를 이용하는 방법에 대해서 알아보도록 하겠다.


    하스스톤


    하스스톤의 API를 알아보기에 앞서, API가 무엇인지 혹시 궁금하다면 아래 포스팅을 참조하도록 하자.
    ( 참조: 기업 공시자료 API로 확인하기 - 전자공시 시스템 )


    블리자드에서는 자사의 게임과 관련된 여러가지 API를 서비스하고 있는데, 아쉽게도 하스스톤의 API는 없다. 하스스톤의 API는 블리자드에서 정식 운영하는 것은 아니고, 누군가가 이를 안타깝게 여겨 만들어 제공하고 있는 것이다.


    하스스톤_API

    ( 하스스톤API 싸이트 바로가기 )


    하스스톤의 API를 이용하기 위해서는 mashape에 회원가입을 해야 한다. 회원가입은 무료이다. 회원가입을 하고 나면, API키가 자동으로 생성되면 하스스톤 API를 이용할 수 있다. 이용할 수 있는 API는 총 11개이다. 카드 정보에 관한 내용들인데, 각각이 제공하는 결과값이 다소 차이가 있다.


    [ 하스스톤 API에서 제공하는 정보 ]

      1. All Cards - 전체 카드종류(?)에 대한 정보

      2. Card Backs

      3. Card Search - 일부 이름으로 카드를 찾는 API

      4. Card Set - 특정 카드셋의 모든 카드 정보 (예를 들어 Blackrock Mountain, Classic 등)

      5. Card by Class - 특정 클래스의 모든 카드 정보 (에를 들어 Mage, Paladin 등)

      6. Cards by Faction - 특정 종족의 모든 카드 정보를 (예를 들어 Horde, Neutral 등)

      7. Cards by Quality - 특정 속성의 모든 카드 정보 (에를 들어 Legendary, Common 등)

      8. Cards by Race - 특정 Race의 모든 카드 정보 (예를 들어 Mech, Murioc 등)

      9. Cards by Type - 특정 타입의 모든 카드 정보 (예를 들어, Spell, Weapon 등)

      10. Info - 현재 patch, sets, 타입들, 종족, 속성, Races 등의 리스트 정보

      11. Single Card - 이름이나 ID로 카드 정보를 가져오는 API


    All cards API를 이용하여, 전체 카드 정보를 가져와 봤다. API를 이용하여 데이터를 수집하는 것은 이전에도 많이 다루었기 때문에 별도의 설명은 생략한다. API를 이용한 데이터 수집에 대해서는 아래 포스팅을 참조하도록 하자.
    ( 참조: [dart api 1] 기업공시시스템 open api 사용하기 )


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # coding=utf-8
     
    import os
    import sys
    import requests
    import urllib.request
    import pandas as pd
     
    from io import StringIO
     
     
    url = "https://omgvamp-hearthstone-v1.p.mashape.com/cardbacks"
    request = urllib.request.Request(url)
     
    request.add_header("X-Mashape-Key""발급받은 키를 입력한다")
    response = urllib.request.urlopen(request)
     
    txt = response.read()
    temp = pd.read_json(txt)
    cs


    전체 카드 정보는 개별 카드가 아닌 카드종류(?)의 정보 같은 것을 리턴해 준다. 예를 들면 아래의 이미지는 회신 받은 결과값의 하나로 하스스톤이 발매된 해를 기념하여, 나온 카드종류(?)인 듯 하다.

    Card Set API를 이용하여 Classic Set에서 가장 공격력이 높은 카드를 찾아보기로 하였다. 나머지 코드는 위와 동일하고 url만 아래와 같이 변경하면 된다.

    https://omgvamp-hearthstone-v1.p.mashape.com/cards/sets/Classic


    위의 주소를 이용하면, 클래식 Card Set에 대해 아래와 같은 정보를 가져올 수 있다.

    artist, attack, cardId, cardSet, collectible, cost, dbfId, durability, elite, faction, flavor, health, img, imgGold, locale, mechanics, name, playerClass, race, rarity, text, type


    공격력이 가장 높은 카드를 찾아보았더니 DeathWing이라는 카드가 나왔다. Race는 Dragon이고, 채력과 비용도 꽤 높은 카드임을 알 수 있었다.

    "Neltharion으로 알려진 고귀한 용, Deathwing은 패배하기 전에 마음을 잃고 Azeroth을 산산조각 냈습니다." 라는 설명도 확인할 수 있다.


    ( Classic에서 가장 공격력인 높은 Deathwing,
    좀 쎄게 생기긴 했다. )


    하스스톤 API를 이용하면, 카드 정보를 테이블 형태로 받을 수 있기 때문에 여러가지 재미있는 분석들을 해 볼 수 있을 듯 하다.


    오늘은 이렇게 하스스톤 API를 파이썬을 이용하여 사용해 보았다. 하스스톤 카드들의 정보를 수집할 수 있었고, 이를 통해 다양한 작업들을 해 볼 수 있지 않을까 한다.


    파이참 단축키들을 알면, 코딩 작업을 빠르게 할 수 있다. 자주 사용하는 파이참 단축키가 궁금하다면, 아래 포스팅을 참조해보자.
    ( 참조: 파이참 단축키 BEST3! )


    이 글 공유하기