2020. 10. 4. 14:58ㆍ클론을 해보자
저번글에서 두번째 기능인 소환사의 최근 10게임 승률을 보여주는 코드까지 완성했습니다.
- 소환사의 현재 티어를 보여 줌
- 소환사의 최근 10게임 승률을 보여 줌.
- 소환사가 현재 게임을 진행 중인지 알려 줌.
이번 글에서는 마지막 기능인 소환사가 현재 게임을 진행 중인지 확인하는 코드를 작성해보도록 하겠습니다.
현재 게임을 진행 중인지 알려주는 api는 SPECTATOR-V4 입니다.
이 API는 소환사가 게임을 진행 중이다면, 현재 게임의 고유 ID 값과, 게임 타입과, 게임 모드 등의 정보를 제공해줍니다.
우리는 관전 기능보다는 현재 게임이 진행중인지 진행중이지 않은지만 확인하면 되기 때문에, GameId가 null인지 체크를 통해 소환사가 현재 게임을 진행중인지 확인 할 수 있습니다.
코드를 작성해보도록 하겠습니다.
이번 API는 encryptID를 사용하기 때문에 지난번에 작성했던 encryptId.py를 import하여 소환사 이름을 encryptId로 바꾸고 api를 돌리는 식으로 하겠습니다.
다음과 같이 코드를 작성해보았습니다. 만약 게임 중이다면 try 부분에서 이루어지기 때문에 True가 return 될 것이고 게임중이 아니어서 gameId를 가져올 수 없다면 error가 발생해 False를 return 합니다.
import encryptId
import requests
def getIngame(DEVELOPMENTAPIKEY,summonerName):
encryptedId, encryptedAccountId = encryptId.encrypt(DEVELOPMENTAPIKEY,summonerName)
headers = {
"Origin": "https://developer.riotgames.com",
"Accept-Charset": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Riot-Token": DEVELOPMENTAPIKEY,
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"
}
APIURL = "https://kr.api.riotgames.com/lol/spectator/v4/active-games/by-summoner/" + encryptedId
res = requests.get(APIURL, headers=headers)
data = res.json()
try:
gameid = data["gameId"]
return True
except:
return False
DEVELOPMENTAPIKEY = "RGAPI-1516e05f-1a9d-47dc-9f7f-8a99b1741b18"
summonerName = "볼빵빵 다람쥐"
print(getIngame(DEVELOPMENTAPIKEY,summonerName))
결과가 성공적으로 나오는 것을 확인할 수 있습니다.
우리가 필요한 API는 다 만들었기 때문에 이제 본격적으로 백엔드 작업을 시작해보도록 하겠습니다.
백엔드 작업은 지난번 글에서 django 설치한 이후 부터 진행하면 됩니다.
백엔드 작업의 시작은 application 생성입니다. 보통 어플리케이션이라고 하면 모바일 환경의 앱을 생각하여 헷갈릴 수도 있습니다. django의 application 이란 사이트를 구성하는 특정 부분이라고 생각하시면 편합니다.
예를 들어서, 커뮤니티 사이트를 django로 구축하려고 하면 user, post, comment 등 다양한 기능(부분)이 필요합니다. 이때 user post comment가 각각 application입니다.
저희는 lol이라는 application을 만들어 api로 얻어낸 값을 내보내는 사이트를 구축하겠습니다.
app을 만드는 법은 매우 간단합니다. 다음과 같은 명령어로 application 생성이 가능합니다.
python manage.py startapp lol
django의 manage.py는 매우 많은 기능을 제공합니다. 위와 같이 application 생성을 하기도 하고, superuser(관리자)를 생성하기도 하며, migration(모델에서 정의한 데이터베이스를 실제 데이터베이스에 반영) 그리고 제일 중요한 runserver(서버 가동) 등의 기능을 제공합니다.
startapp을 통해 lol을 만들었다면 simplegg 폴더 아래에 다음과 같이 lol 폴더와 파일이 생겼을 것입니다.
하나씩 살펴보도록 하겠습니다. 그전에 tests.py는 사용하지 않기 때문에 삭제하도록 하겠습니다.
admin.py는 관리자 페이지에서 해당 application을 다루기 위한 code입니다.
apps.py는 해당 application의 이름과 별칭을 정할 수 있는 code입니다.
models.py는 해당 application이 필요한 데이터베이스를 정의할 수 있는 code입니다.
views.py는 실제적인 api와 같은 기능으로 특정 url로 들어왔을 때 views.py를 호출하여 views.py가 사용자에게 해당하는 내용을 보여줍니다.
urls.py가 없기 때문에 생성해주도록 하겠습니다.
이제 runserver를 통해 서버를 가동시켜보도록 하겠습니다. 서버를 가동시키기 전에 필요한 pip 파일들을 다운받아야 합니다.
requirements폴더로 이동하여 설치를 진행해줍니다.
pip install -r base.txt
pip install -r local.txt
pip install -r production.txt
pip install -r 은 해당 파일에 적힌 pip들을 모두 다운받는 뜻입니다.
이번글에서는 다운까지하도록 하겠습니다. 다음 글에서는 서버를 실제로 실행시키고 admin page를 살펴보도록 하겠습니다.
'클론을 해보자' 카테고리의 다른 글
OP.GG 클론하기 - 롤 전적 검색 사이트 만들기 7 (0) | 2020.10.05 |
---|---|
OP.GG 클론하기 - 롤 전적 검색 사이트 만들기 6 (0) | 2020.10.04 |
OP.GG 클론하기 - 롤 전적 검색 사이트 만들기 4 (0) | 2020.09.15 |
OP.GG 클론하기 - 롤 전적 검색 사이트 만들기 3 (1) | 2020.09.15 |
OP.GG 클론하기 - 롤 전적 검색 사이트 만들기 2 (0) | 2020.09.14 |