본문 바로가기
Project/TeamFightTactics

[데이터 수집] 프로젝트 정의서

by Wikinist 2023. 7. 23.

[여러 국가 최상위 플레이어들의 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. 데이터 논리 구조 설계

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 브랜치를 생성하여 머지 리퀘스트를 받는 형식으로 변경하였습니다.