[여러 국가 최상위 플레이어들의 TFT 매치 데이터 수집]
- 기간: 2023-07-17 ~ 2023-07-21 (총 5일)
- 정의: Riot API를 활용하여 TFT 최상위 플레이어들의 매치 데이터를 수집합니다.
- 목적: TFT 매치 데이터를 수집하여 메타분석, 챔피언이나 아이템들의 상관관계를 분석할 수 있습니다.
- 범위: 아메리카, 아시아, 유럽 서버에 해당하는 나라, 최상위 플레이어(Top10)들의 매치 데이터를 수집합니다.
- 나라와 서버 정보는 다음과 같습니다.
- 브라질(BR1), 유럽서부(EUW1), 유럽북동(EUN1), 일본(JP1), 한국(KR), 라틴아메리카북부(LA1), 라틴아메리카남부(LA2), 북미(NA1), 오세아니아(OC1), 필리핀(PH2), 러시아(RU), 싱가포르(SG2), 태국(TH2), 터키(TR1), 대만(TW2), 베트남(VN2)
[할 일 목록]
[1일차]
1. 프로젝트 주제 선정
- 데이터 수집을 위한 API나 플랫폼 탐색(서울 열린데이터 광장, Riot Developer Portal, SRT, Naver map)
- 주제 리스트 작성 및 비교
[2일차]
1. 데이터 논리 구조 설계
- Riot Developer Portal(https://developer.riotgames.com/apis#tft-match-v1/)에서 수집 할 Match 데이터의 논리적 구조를 설계합니다.
- 테이블 목록 : Matches, MatchPlayers, MatchAugments, MatchTraits, MatchUnits
- lolchess.gg(https://lolchess.gg/leaderboards), Riot Deverloper Portal(https://developer.riotgames.com/apis#tft-summoner-v1) 두 URL로부터 수집 할 player 데이터의 논리적 구조를 설계합니다.
- 테이블 목록 : Players
2. 기본적인 클래스 구조 설계 및 구현
- 각각의 테이블들의 Entity 클래스들을 작성합니다.
[3일차]
1. 플레이어 데이터 스크레이핑
- TftScraper 클래스를 작성하여 플레이어 데이터를 수집합니다.
2. TFT Match 데이터 수집
- RiotAPI를 사용하여 Match 데이터를 수집하는 RiotApiAdaptor 클래스를 작성합니다.
3. 데이터 저장
- 수집한 클래스를 저장하는 함수를 작성합니다.
[4일차]
1. 수집한 데이터로부터 TFT 클래스 리스트 생성
- TFT 클래스를 생성할 때 TftDataHandler 클래스를 사용합니다.
2. 수집 과정의 전체적인 흐름 작성 및 구현
- main 모듈의 전체적인 동작 과정을 정의 및 구현합니다.
[5일차]
1. 여러 국가의 csv파일 병합
- 파일 병합 함수를 추가합니다.
2. 코드 정리
- 주석이 필요한 곳, 수정이 필요한 곳을 찾아 변경합니다.
3. API key 재발급
4. region과 continent 매치 확인
[이슈 항목]
1. 리스트에 다른 리스트의 원소를 추가할 때 append를 사용
list1 = [1,2,3]
list2 = [4,5,6]
두 리스트가 존재 할 때 아래와 같이 사용하여 예상치 못한 부분에서 에러가 발생했었습니다.
list1.append(list2) # [1,2,3,[4,5,6]]
위의 결과를 원했던 것이 아니어서 아래와 같이 수정했습니다.
list1.extend(list2) # [1,2,3,4,5,6]
list1 + list2 # [1,2,3,4,5,6]
2. 로그 메시지를 DEBUG 레벨의 메시지만 출력
- 로그 메시지를 DEBUG 레벨의 메시지만 출력하고 싶었는데 레벨 설정으로는 모든 레벨의 로그가 출력됩니다.
- 그래서 Filter를 추가하여 DEBUG 레벨의 메시지만 출력되도록 변경하였습니다.
3. Github에 민감한 정보 포함
- 메인 모듈에 API key를 포함하여 원격 리포지토리에 푸시를 하였습니다. 어차피 해당 key는 사용기한이 하루기 때문에 상관 없을 것이라 생각했지만 추후 리포지토리를 public으로 전환 할 예정이었기에 확실히 하기 위해서 프로젝트를 재 생성하여 환경을 다시 설정하였습니다.
- 추후 이런 실수를 방지하기 위해 main 브랜치는 머지만 하기로하고 develop 브랜치를 생성하여 머지 리퀘스트를 받는 형식으로 변경하였습니다.
'Project > TeamFightTactics' 카테고리의 다른 글
[데이터 저장] ERD & 테이블 정의서 (0) | 2023.08.07 |
---|---|
[데이터 저장] 데이터 정의서 (0) | 2023.08.07 |
[데이터 저장] 프로젝트 정의서 (0) | 2023.08.07 |
Riot API 이용 방침 문의 (0) | 2023.07.24 |
[데이터 수집] 데이터 정의서 (0) | 2023.07.23 |