스모곤 사이트를 저장해서 뜯어보면 <head> 부분에 이런 스크립트 구문이 있다.
(모든 상세 페이지에 해당되는 내용)
<script type="text/javascript">
dexSettings = {"injectRpcs":[["[\"dex\",\"dump-gens\"]",[{"name":"Red/Blue","
shorthand":"RB"},{"name":"Gold/Silver","shorthand":"GS"},{"name":"Ruby/Sapphire",
"shorthand":"RS"},{"name":"Diamond/Pearl","shorthand":"DP"},{"name":"Black/White",
"shorthand":"BW"},{"name":"X/Y","shorthand":"XY"},{"name":"Sun/Moon","shorthand":"SM"},
{"name":"Sword/Shield","shorthand":"SS"}]],["[\"dex\",\"dump-basics\",{\"gen\":\"ss\"}]",
{"pokemon":[{"name":"Bulbasaur","hp":45,"atk":49,"def":49,"spa":65,"spd":65,"spe":45,
"weight":6.9,"height":0.7,"types":["Grass","Poison"],"abilities":["Chlorophyll",
"Overgrow"],"formats":["LC"],"isNonstandard":"Standard"...
....
자세한 작동원리는 모르겠으나, 중요한 건 저 스크립트 안에 dexSettings라는 아주 유용한 데이터가 있다는 점이다!
저 부분만 따로 떼어서 맵 자료형으로 만들어보았다.
일단 이렇게 포켓몬 / 포맷 / 성격 / 특성 / 기술 / 타입 / 도구에 대한 내용이 싹 다 들어있다.
물론 대부분은 int나 string으로만 들어있을 뿐이라서 이를 DB화하려면 추가적인 노력이 필요하긴 하다. 그래도 이게 어디인가!
일례로 이상해꽃을 보면
{
"name": "Venusaur",
"hp": 80,
"atk": 82,
"def": 83,
"spa": 100,
"spd": 100,
"spe": 80,
"weight": 100,
"height": 2,
"types": ["Grass", "Poison"],
"abilities": ["Chlorophyll", "Overgrow"],
"formats": ["RUBL"],
"isNonstandard": "Standard",
"oob": {
"dex_number": 3,
"evos": [],
"alts": ["Venusaur-Gmax", "Venusaur-Mega"],
"genfamily": ["RB", "GS", "RS", "DP", "BW", "XY", "SM", "SS"]
}
},
종족값과 체중/키 (심지어 미터법!) 타입, 특성, 가라르에서 사용가능여부(isNonstandard) 전국도감번호, 폼체인지(alts), 등장 세대까지 다 나오는 것을 확인할 수 있다.
가라르 입국을 못한 포켓몬들은 isNonstandard에 NatDex라는 값이 들어가 있다.
아, 그리고 여기에는 CAT(Create A Pokemon)이라는 프로젝트에서 추가한 자작 포켓몬들 데이터도 몇 십개 정도 들어가 있으니ㅋㅋ 알아서 거르시길.
dexSettings_Smogon.dart 다운로드 링크
유용한 자료가 되기를.
왜 dart파일이냐하면.. 그나마 내가 쓸 줄 아는 언어가 Flutter 뿐이라 그러하다..ㅠ
물론 JS는 필수니까 배워보려 하는 중.
0 댓글