현재 진행하고 있는 프로젝트에서
보드게임에 대한 정보들을 제공할건데
이것들을 수작업으로 할 순 없으니
API나 데이터셋들에서 어떤 데이터들을 가져올 수 있는지 정리해보려 한다.
먼저 이쪽 분야에서 제일 유명한 BoardGame Geek을 살펴보자.
BoardGame Geek(이하 BGG) API는 xml형태로 응답한다.
들어가기에 앞서 해당 문서에서 여러 command들이 등장하는데
모두 정리하기에는 내용이 길어져
해당 포스팅에서는 쓸모 있어 보이는 정보들만 정리해 보겠다.
먼저 기본적인 url 형태가 다음과 같이 주어진다.
https://boardgamegeek.com/xmlapi2/https://rpggeek.com/xmlapi2/https://videogamegeek.com/xmlapi2/3개 다 호환되기 때문에 아무거나 써도 된다.
해당 문서에서 유형적인 것들을 thing이라고 부르는데
실질적으로 필요한 거의 모든 정보가 여기에 담겨있다.
thing을 통해 얻어올 수 있는 정보들은 대략 다음과 같다.
base URI : .../xmlapi2/thing?parameters
type (boardgame)
thumbnail
image
name (type=primary로 영어, type=alternate로 다양한 언어 버전 제공)
description (근데 영어다)
yearpublished (출시연도인듯)
minplayers
maxplayers
suggested_numplayers (각 숫자에 대해 사용자들의 Best, Recommended, Not Recommended 투표수를 담고있다.)
minplaytime
maxplaytime
minage
category (<link type="boardgamecategory"/>)
mechanic (<link type="boardgamemechanic"/>)
family (<link type="boardgamemefamily"/>)
여기서 위 3가지의 차이점이 헷갈려서 정리해봤다.
- category : 보드게임의 전반적인 테마나 장르 (ex. Economic)
- mechanic : 게임 내에서 플레이어가 사용하는 구체적인 규칙이나 방법론 (ex. Market)
- family : 특정 유형, 메커니즘, 테마 또는 게임 시리즈를 함께 묶은 것 (ex. Country: England)
사실 정리해놓고 봐도 뭔 차인지 잘 모르겠다.
boardgameartist
boardgamepublisher
등이 있다. (불필요해보이는 부분들은 제외함.)
thing에는 다양한 파라미터들이 있다.
특히 stats 파라미터를 켜주게 되면 꽤나 쓸모있는 정보들을 받아올 수 있는데
이는 다음과 같다.
또한 추가적으로 쓸모 있어 보이는 파라미터로는
등이 있다.
kaggle에 사람들이 이미 수집해놓은 data set을 올려둔게 있었다.
다만 수집일이 약간 오래 돼 직접 API에서 받아오는 정보보단 못한거 같았다.
원래는 api 뜯어보는게 생각보다 쉽지 않아서
이 data set을 쓸까 했는데,
api 문서를 계속 보다보니 어느 순간 읽히게 돼서 그냥 api에서 받아올련다.
혹시나 필요하신 분들을 위해 링크만 걸어놓겠다.
Board Game Data (수집일 2017년 3월)
bgg-games-data (수집일 2020년 7월)
Board Games Analysis 🎲🎲🎯 (수집일은 명시되어 있지 않으나 작성일이 3년전인걸로 보아 2021년쯤으로 예상된다.)