KartRider.py¶
시작하기 전에¶
이 라이브러리는 카트라이더의 OpenAPI를 파이썬으로 래핑한 라이브러리입니다. 사용하기 위해선 KartRider OpenAPI 의 API Key가 필요합니다. OpenAPI docs 도 참고해 보세요.
라이브러리의 모든 날짜는 UTC 기준입니다.
설치하기¶
> pip install KartRider
import KartRider
KartRider.download_meta(DOWNLOAD_DIR)
# OR downmeta_ifnotexist(DOWNLOAD_DIR)
KartRider.set_metadatapath(DOWNLOAD_DIR)
위와 같이 메타데이터를 다운로드 받고 경로를 설정합니다.
메타데이터는 업데이트가 필요합니다. donwload_meta 함수를 며칠 주기로 호출하세요.
api = KartRider.Api(API_KEY)
API KEY는 공개적으로 저장하지 마세요.
튜토리얼¶
특정 아이디의 최근 10 매치 불러오기¶
import KartRider
KartRider.set_metadatapath(META_PATH)
api = KartRider.Api(API_KEY)
nickname = '닉네임'
matches = api.user(nickname).getMatches(limit=10)
games = matches
for gametype, match in games.items():
for game in match:
print('게임 : {}, 캐릭터 : {}, 카트 : {}, 맵 : {}, 순위 : {}, 날짜 : {}'
.format(gametype,game.player.character, game.player.kart,
game.track, game.player.matchrank, game.starttime))
가장 최근 매치의 상세 정보 불러오기¶
import KartRider
KartRider.set_metadatapath(META_PATH)
api = KartRider.Api(API_KEY)
allmatches = api.getAllMatches(limit=1)
game = list(allmatches.mergevalues())[0]
print('게임 : {}, 채널 이름 : {}, 트랙 이름 : {}'
.format(game.matchtype, game.channelname, game.track))
if game.isteamgame:
i = 0
for players in game.teams:
print('{}팀 :'.format(i))
for player in players:
print('닉네임 : {}, 캐릭터 : {}, 카트 : {}, 순위 : {}, 리타이어 여부 : {}'
.format(player.charactername, player.character, player.kart,
player.matchrank, player.matchretired))
i += 1
else:
for player in game.players:
print('닉네임 : {}, 캐릭터 : {}, 카트 : {}, 순위 : {}, 리타이어 여부 : {}'
.format(player.charactername, player.character, player.kart,
player.matchrank, player.matchretired))
레퍼런스¶
라이브러리의 uml 입니다.
Api 클래스¶
-
class
KartRider.apiwrapper.
Api
(accesstoken)¶ 기반 클래스:
object
카트라이더 OpenAPI Wrapper 클래스입니다.
- 매개변수
accesstoken (
str
) – 사용자의 API KEY 문자열
-
getAllMatches
(start_date='', end_date='', offset=0, limit=10, match_types='')¶ 모든 유저의 매치 데이터를 받아옵니다.
- 매개변수
start_date (
Union
[datetime
,str
]) – 조회 시작 날짜(UTC)end_date (
Union
[datetime
,str
]) – 조회 끝 날짜(UTC)offset (
int
) – 조회 오프셋limit (
int
) – 조회 수 (최대 500건)match_types (
Union
[List
[str
],str
]) – 매치 타입 이름이나 ID (리스트 또는 단일 문자열)
- 예외
InvalidToken – 잘못된 Token이나 파라미터 입력
ForbiddenToken – 허용되지 않은 AccessToken 사용
NotFound – 존재하지 않는 리소스
TooManyRequest – AccessToken의 요청 허용량 초과
UnknownStatusCode – 알 수 없는 오류
- 반환값
모든 매치 정보 클래스
- 반환 형식
-
getUserMatches
(id, start_date='', end_date='', offset=0, limit=10, match_types='')¶ 유저의 매치 데이터를 받아옵니다. Api.user(…).getMatches(…) 로도 사용할 수도 있습니다.
- 매개변수
id (
Union
[str
,User
]) – 유저의 accessid 혹은 User 클래스start_date (
Union
[datetime
,str
]) – 조회 시작 날짜(UTC)end_date (
Union
[datetime
,str
]) – 조회 끝 날짜(UTC)offset (
int
) – 조회 오프셋limit (
int
) – 조회 수 (최대 500건)match_types (
Union
[List
[str
],str
]) – 매치 타입 이름이나 ID (리스트 또는 단일 문자열)
- 예외
InvalidToken – 잘못된 Token이나 파라미터 입력
ForbiddenToken – 허용되지 않은 AccessToken 사용
NotFound – 존재하지 않는 리소스
TooManyRequest – AccessToken의 요청 허용량 초과
UnknownStatusCode – 알 수 없는 오류
- 반환 형식
-
user
(nickname=None, accessid=None)¶ 유저의 닉네임과 ID 클래스를 생성합니다.
사용법:
>>> api = KartRider.Api(API_KEY) >>> api.user(nickname) # nickname 으로 User 클래스 생성 >>> api.user(accessid) # accessid 로 User 클래스 생성 >>> api.user(nickname, accessid) # nickname 과 accessid 일치 여부 확인 후 User 클래스 생성
- 매개변수
nickname (
Optional
[str
]) – 검색할 닉네임accessid (
Optional
[str
]) – 검색할 accessid
- 예외
ValueError – nickname 과 accessid 모두 입력하지 않음
ValueError – nickname 과 ID가 일치하지 않음
InvalidToken – 잘못된 Token이나 파라미터 입력
ForbiddenToken – 허용되지 않은 AccessToken 사용
NotFound – 존재하지 않는 리소스
TooManyRequest – AccessToken의 요청 허용량 초과
UnknownStatusCode – 알 수 없는 오류
- 반환 형식
-
exception
KartRider.apiwrapper.
ForbiddenToken
¶ 기반 클래스:
Exception
허용되지 않은 API key를 사용했을때(응답코드 403) 발생하는 오류입니다.
-
exception
KartRider.apiwrapper.
InvalidToken
¶ 기반 클래스:
Exception
잘못된 파라미터 입력(응답코드 400)을 할때 발생하는 오류입니다.
-
exception
KartRider.apiwrapper.
NotFound
¶ 기반 클래스:
Exception
리소스가 존재하지 않을때(응답코드 404) 발생하는 오류입니다.
-
exception
KartRider.apiwrapper.
TooManyRequest
¶ 기반 클래스:
Exception
API Key 의 요청 허용량을 초과했을때(응답코드 429) 발생하는 오류입니다.
-
exception
KartRider.apiwrapper.
UnknownStatusCode
¶ 기반 클래스:
Exception
OpenAPI나 모듈의 버그로 인하여 발생하는 오류입니다.
매치 데이터¶
-
class
KartRider.match.
AllMatches
(api, **kwargs)¶ 기반 클래스:
KartRider.basedata._BaseData
,KartRider.basedata.MergeAbleDict
전체 매치의 데이터를 담고 있는 클래스입니다.
매치 타입 ID 또는 이름(메타데이터 경로가 지정됐을때)을 키로,
MatchDetail
의 리스트를 값으로 가지는 dict와 같습니다.- 사용법:
>>> mr = api.user('닉네임').getMatches() >>> mi = mr['아이템 팀전'] >>> mi[0].character 노네임
-
class
KartRider.match.
MatchDetail
(api, matchid)¶ 기반 클래스:
KartRider.basedata._BaseData
매치의 상세 정보를 담고 있는 클래스입니다.
- 사용법:
>>> all = api.getAllMatches() >>> teammatch = all['스피드 팀전'] >>> detail = teammatch[0] >>> detail.matchType 스피드 팀전
참고
matchTypeId를 제외한 나머지 속성들은 호출할때 최초 1번 api를 사용합니다.
isTeamGame 이 True 일시 teams를, false 일시 players 를 멤버로 갖습니다.
-
channelname
¶ 채널 명(str)
-
endtime
¶ 게임 종료 시간(datetime)
-
gamespeed
¶ 게임 스피드 모드(int)
-
isteamgame
¶ 팀 게임 여부(bool)
-
matchid
¶ 매치 ID(str)
-
matchresult
¶ 매치 결과(str)
-
property
matchtype
¶ 매치 종류 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
matchtypeid
¶ 매치 종류 ID(str)
-
playtime
¶ 게임 진행 시간(int)
-
starttime
¶ 게임 시작 시간(datetime)
-
teams
¶ 팀 정보 (list(
KartRider.match.Team
))
-
property
track
¶ 트랙 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
trackid
¶ 트랙 ID(str)
-
class
KartRider.match.
MatchInfo
(api, **kwargs)¶ 기반 클래스:
KartRider.basedata._BaseData
매치 정보를 담고 있는 클래스입니다.
- 사용법:
>>> mr = api.user('닉네임').getMatches() >>> mi = mr['아이템 팀전'][0] # 검색된 매치 중 아이템 팀전의 0번째 매치 정보 >>> mi.character 황금망토 배찌
-
accountno
¶ 계정 고유 식별자(str)
-
channelname
¶ 채널 이름(str)
-
property
character
¶ 캐릭터 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
characterid
¶ 캐릭터 ID(str)
-
detail
¶ 매치 상세 정보 (
MatchDetail
)
-
endtime
¶ 게임 종료 시간(UTC)(datetime)
-
property
matchtype
¶ 매치 종류 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
matchtypeid
¶ 매치 종류 ID(str)
-
playercount
¶ 참여 유저 수(int)
-
starttime
¶ 게임 시작 시간(UTC)(datetime)
-
teamid
¶ 팀 ID(str)
-
property
track
¶ 트랙 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
trackid
¶ 트랙 ID(str)
-
class
KartRider.match.
MatchResponse
(api, nickname, matcheslist)¶ 기반 클래스:
KartRider.basedata._BaseData
,KartRider.basedata.MergeAbleDict
매치 응답 정보를 담고 있는 클래스입니다.
매치 타입 ID 또는 이름(메타데이터 경로가 지정됐을때)을 키로,
MatchInfo
의 리스트를 값으로 가지는 dict와 같습니다.- 사용법:
>>> mr = api.user('닉네임').getMatches() >>> mr['아이템 팀전'][0].playerCount # 검색된 매치 중 아이템 팀전의 0번째 매치 정보의 플레이어 카운트 6
-
nickname
¶ 매치 정보를 호출한 유저의 닉네임
-
class
KartRider.match.
Player
(api, **kwargs)¶ 기반 클래스:
KartRider.basedata._BaseData
매치 플레이어의 정보를 담고 있는 클래스입니다.
- 사용법:
>>> all = api.getAllMatches() >>> teamgame = all['스피드 팀전'] >>> detail = teamgame[0] >>> player = detail.teams[0][1] >>> player.kart 루루 X
-
accountno
¶ 유저 ID(str)
-
property
character
¶ 캐릭터 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
characterid
¶ 캐릭터 ID(str)
-
charactername
¶ 유저 닉네임(str)
-
flyingPetid
¶ 플라잉펫 ID(str)
-
property
flyingpet
¶ 플라잉펫 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
property
kart
¶ 카트 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
kartid
¶ 카트 ID(str)
-
license
¶ 구 라이선스(str)
-
matchrank
¶ 순위, 리타이어는 -1
-
matchretired
¶ 리타이어 여부
-
matchtime
¶ 매치 진행 시간(int)
-
matchwin
¶ 매치 승리 여부
-
partsengine
¶ 카트바디의 엔진 파츠 (9 엔진 이하)(str)
-
partshandle
¶ 카트바디의 핸들 파츠 (9 엔진 이하)(str)
-
partskit
¶ 카트바디의 킷 파츠 (9 엔진 이하)(str)
-
partswheel
¶ 카트바디의 휠 파츠 (9 엔진 이하)(str)
-
property
pet
¶ 펫 이름
- 예외
FileNotFoundError – 메타데이터 경로가 설정되지 않았을때
- 반환 형식
str
-
petid
¶ 펫 ID(str)
-
rankinggrade2
¶ 리뉴얼 라이선스(str)
-
class
KartRider.match.
Team
(api, teamid, players)¶ 기반 클래스:
typing.List
,list
Player
의 List입니다.-
teamid
¶ 팀 ID(str)
-
유저 데이터¶
-
class
KartRider.user.
User
(api=None, name=None, accessid=None)¶ 기반 클래스:
KartRider.basedata._BaseData
사용자 정보 클래스입니다.
>>> User(api, name) # 닉네임과 api로 User 클래스를 만듭니다.
>>> User(api, accessid) # Accessid로 User 클래스를 만듭니다.
>>> User(name, accessid) # 유효성 검사를 하지 않습니다. name과 accessid가 확실하게 일치할때만 사용하세요. 아니라면 대신 Api.user(nickname) 혹은 Api.user(accessid)를 사용하세요.
참고
api가 None 이고 name, accessid 중 하나만 입력했다면 나머지 하나를 호출할때 ValueError가 던져집니다. api가 None 이 아니라면 나머지 하나를 호출할때 api를 사용합니다.
- 예외
ValueError – name 과 accessid 모두 입력하지 않음
- 매개변수
api (KartRider.apiwrapper.Api) – Api 클래스
name (
Optional
[str
]) – 카트라이더 닉네임 문자열accessid (
Optional
[str
]) – 카트라이더 내부 유저 id 문자열(계정 id가 아님)
-
property
accessid
¶ 플레이어 고유 ID
- 예외
ValueError – api가 None인데 호출함
- 반환 형식
str
-
getMatches
(start_date='', end_date='', offset=0, limit=10, match_types='')¶ 유저의 매치 데이터를 받아옵니다.
- 매개변수
start_date (
Union
[datetime
,str
]) – 조회 시작 날짜(UTC)end_date (
Union
[datetime
,str
]) – 조회 끝 날짜(UTC)offset (
int
) – 조회 오프셋limit (
int
) – 조회 수 (최대 500건)match_types (
Union
[List
[str
],str
]) – 매치 타입 이름이나 ID (리스트 또는 단일 문자열)
- 예외
ValueError – api가 None인데 호출함
InvalidToken – 잘못된 Token이나 파라미터 입력
ForbiddenToken – 허용되지 않은 AccessToken 사용
NotFound – 존재하지 않는 리소스
TooManyRequest – AccessToken의 요청 허용량 초과
UnknownStatusCode – 알 수 없는 오류
- 반환 형식
-
property
name
¶ 플레이어 닉네임
- 예외
ValueError – api가 None인데 호출함
- 반환 형식
str
메타 데이터¶
-
KartRider.metadata.
download_meta
(file_dir)¶ 메타데이터를 다운로드 합니다.
- 매개변수
file_dir (str) – 메타데이터가 들어갈 폳더 경로
-
KartRider.metadata.
downmeta_ifnotexist
(file_dir)¶ 메타데이터 폴더가 없으면 메타데이터를 다운로드 합니다.
- 매개변수
file_dir (str) – 메타데이터가 들어가거나 있는 폴더
- 반환값
다운로드 했으면 True, 하지 않았으면 False 를 반환합니다.
- 반환 형식
bool
-
KartRider.metadata.
getcharacterid
(name)¶ 캐릭터 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 캐릭터 이름
- 반환값
캐릭터 ID
- 반환 형식
str
-
KartRider.metadata.
getcharactername
(id)¶ 캐릭터 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 캐릭터 ID
- 반환값
캐릭터 이름
- 반환 형식
str
-
KartRider.metadata.
getcharactersdict
()¶ 캐릭터 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
getflyingpetid
(name)¶ 플라잉펫 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 플라잉펫 이름
- 반환값
플라잉펫 ID
- 반환 형식
str
-
KartRider.metadata.
getflyingpetname
(id)¶ 플라잉펫 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 플라잉펫 ID
- 반환값
플라잉펫 이름
- 반환 형식
str
-
KartRider.metadata.
getflyingpetsdict
()¶ 플라잉펫 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
getgametypeid
(name)¶ 게임 타입 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 게임 타입 이름
- 반환값
게임 타입 ID
- 반환 형식
str
-
KartRider.metadata.
getgametypename
(id)¶ 게임 타입 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 게임 타입 ID
- 반환값
게임 타입 이름
- 반환 형식
str
-
KartRider.metadata.
getgametypesdict
()¶ 게임 유형 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
getimagepath
(name, typename)¶ 메타데이터 이미지의 경로를 가져옵니다.
- 매개변수
name (
str
) – 가져올 메타데이터의 이름 또는 Idtypename (
str
) – 가져올 메타데이터 종류(kart, character, track)
- 반환값
메타데이터의 이미지 경로
- 반환 형식
str
-
KartRider.metadata.
getkartid
(name)¶ 카트 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 카트 이름
- 반환값
카트 ID
- 반환 형식
str
-
KartRider.metadata.
getkartname
(id)¶ 카트 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 카트 ID
- 반환값
카트 이름
- 반환 형식
str
-
KartRider.metadata.
getkartsdict
()¶ 카트 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
getpetid
(name)¶ 펫 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 펫 이름
- 반환값
펫 ID
- 반환 형식
str
-
KartRider.metadata.
getpetname
(id)¶ 펫 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 펫 ID
- 반환값
펫 이름
- 반환 형식
str
-
KartRider.metadata.
getpetsdict
()¶ 펫 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
gettrackid
(name)¶ 트랙 이름을 받아 ID를 반환합니다.
- 매개변수
name (str) – 트랙 이름
- 반환값
트랙 ID
- 반환 형식
str
-
KartRider.metadata.
gettrackname
(id)¶ 트랙 ID를 받아 이름을 반환합니다.
- 매개변수
id (str) – 트랙 ID
- 반환값
트랙 이름
- 반환 형식
str
-
KartRider.metadata.
gettracksdict
()¶ 트랙 id를 키로, 이름을 값으로 하는 딕셔너리를 가져옵니다.
- 반환 형식
dict
-
KartRider.metadata.
set_metadatapath
(path)¶ 메타데이터의 경로를 설정합니다.
메타데이터 경로를 설정하지 않으면 여러 정보(카트, 트랙이름, 펫이름 등)의 실제 이름 확인이 불가능합니다.
- 매개변수
path (
str
) – 메타데이터 폴더 경로 문자열- 예외
FileNotFoundError – 폴더가 존재하지 않을때