Closed haein-kim closed 3 years ago
playerNames로 필터하여 데이터 가져오기 성공
import requests
url = "https://api.pubg.com/shards/kakao/players?filter[playerNames]=de_javu_"
header = {
"Authorization": "Personal API Key",
"Accept": "application/vnd.api+json"
}
r = requests.get(url, headers=header)
json = r.json()
json
matches로 필터하여 데이터 가져오기 성공
url = "https://api.pubg.com/shards/kakao/matches/24a26a10-ae7f-4cba-a717-f2b00465393e"
header = {
"Authorization": "Personal API Key",
"Accept": "application/vnd.api+json"
}
r = requests.get(url, headers=header)
json=r.json()
json
아직 안 된 것
이렇게 데이터를 가져올 수도 있습니다. api 주소가 매우 길기 때문에 따로 빼주면 좀 더 깔끔한 코드 모양이 됩니다.
playerNames로 필터하여 데이터 가져오기 2
api_key = 'Personal API Key'
headers = {'accept': 'application/vnd.api+json',
'Authorization': f'Bearer {api_key}'}
url = "https://api.pubg.com/shards/kakao/players?filter[playerNames]=dataitgirls"
r = requests.get(url, headers=headers)
player_dataitgirls_json = r.json()
player_dataitgirls_json
현재 하고 있는 것
위의 짧은 가이드를 스르륵 읽어야 이 말이 이해가 될 수도 있습니다!
PLAYERS, SEASON STATS, LIFETIME STATS, MASTERY, MATCHES -- 엔드포인트(?) 파이썬 requests 코드 중에 URL을 우리가 필요한대로 커스텀할 수도 있지만, 일단은 펍지에서 분류해 놓은 것의 결과값 확인이 필요해보입니다. Authorization과 Accept 는 계속 같은 걸 쓰니까, URL의 파라미터만 알면 됩니다.
지정할 수 있는 URL일 경우, 샘플 playerName과 날짜를 몇 가지 정하면 서로 비교하기 쉬울 것 같습니다.
api-players.py 예시 Gen.G pio
https://api.pubg.com/shards/steam/players?filter[playerNames]={playerName}
https://api.pubg.com/shards/steam/players/{account Id}
예시 Gen.G pio
https://api.pubg.com/shards/steam/matches/{id}
많음... 파악 중.... 중도하차.....
URL
https://api.pubg.com/shards/steam/matches/tournaments
특이 파라미터
없음
알 수 있는 것
최근 정규 경기의 '토너먼트 아이디'
URL
https://api.pubg.com/shards/steam/matches/tournaments/{id}
예: https://api.pubg.com/shards/steam/matches/tournaments/as-pcs3as
특이 파라미터
토너먼트 아이디는 1번을 통해서 얻을 수 있다.
알 수 있는 것
생성날짜와 매치 아이디 (이번 시즌 끝나면 총 24개)
여기서 얻은 매치 아이디로 matches 검색이 안됨...
endpoint TOURNAMENT 에서 추출한 데이터
import requests
import pandas as pd
api_key = "본인 api_key"
header = {
"Authorization": api_key,
"Accept": "application/vnd.api+json"
}
url = "https://api.pubg.com/tournaments/as-pcs3as"
r = requests.get(url, headers=header)
leagues_pcs3as = r.json()
leagues_pcs3as
matchId_dict = {match['attributes']['createdAt']: match['id'] for match in leagues_pcs3as['included']}
matchId_df = pd.DataFrame(sorted(matchId_dict.items(), key=lambda x: x[0]), columns=['createdAt', 'matchId'])
matchId_df
해당 매치 아이디를 가지고 매치 마다의 정보를 꺼내고 싶은데 어렵네요.
기본적으로 response 확인은 완료하였고 이후 방향이 바뀌어서 본 이슈는 닫겠습니다!
data depth 별로 분류해서 wiki화는 못했지만, dict 가 여러번 겹쳐진 데이터의 depth를 쉽게 파악하는 코드는 만들어볼 수 있었다.
import pprint
pprint.pprint(players_sample, depth=15)
모든 depth가 다 확인되길 바라며 넉넉히 15로 넣어보면 아래와 같은 형태의 결과가 나온다.
{'data': [{'attributes': {'name': 'de_javu_',
'patchVersion': '',
'shardId': 'kakao',
'stats': None,
'titleId': 'bluehole-pubg'},
'id': 'account.ca8daa0ecd934bfc8d2c928523cef677',
'links': {'schema': '',
'self': 'https://api.pubg.com/shards/kakao/players/account.ca8daa0ecd934bfc8d2c928523cef677'},
'relationships': {'assets': {'data': []},
'matches': {'data': [{'id': 'e35b54c0-973d-4378-b28e-6671dc071d22',
'type': 'match'},
{'id': '096d7fb1-086a-4674-a403-55b3cc66a322',
'type': 'match'},
{'id': '4b0b65cd-ac4a-4c5d-a651-519ca5d48468',
'type': 'match'},
{'id': '7a61887e-387c-4348-ac9d-62e2e89c448b',
'type': 'match'},
{'id': '5076eb9d-f077-4e63-98c3-e7b79620d0cd',
'type': 'match'},
{'id': '5f35024e-f1d9-4951-b170-8df6598079bf',
'type': 'match'},
{'id': '8b7a88e0-a182-4d28-9d41-070dc40807b8',
'type': 'match'},
{'id': '659b9b31-9b67-4566-b60d-2601e147ce03',
'type': 'match'},
{'id': '08bc0a33-653a-4a8e-9918-6cf6e91144f6',
'type': 'match'},
{'id': '043887bd-4cab-4f17-b511-b041597d6484',
'type': 'match'},
{'id': 'f4ca3b8f-2f2b-4312-b072-3dd5222ae4ab',
'type': 'match'},
{'id': '208006de-9679-45e5-93d3-e4de0d11d997',
'type': 'match'},
{'id': '24a26a10-ae7f-4cba-a717-f2b00465393e',
'type': 'match'},
{'id': 'bd694081-4b0a-4818-a084-35dc8fa29da4',
'type': 'match'},
{'id': 'cfcbb47a-57c2-49ca-aa01-00827399af13',
'type': 'match'},
{'id': 'b8dbab10-1caa-4de7-af0e-a4820e949a2b',
'type': 'match'},
{'id': 'e1d3938f-0597-49f0-a274-663421c6c721',
'type': 'match'},
{'id': '373f6004-e569-467e-9b07-c8797b926bb3',
'type': 'match'},
{'id': '3806573a-ee26-441f-acc8-86b0196f1241',
'type': 'match'},
{'id': 'e5ec3f51-cd86-4dbf-b633-47683538fe0c',
'type': 'match'},
{'id': 'f9ee7acd-6f53-40a5-9af1-c4b4a1949fa1',
'type': 'match'},
{'id': 'dcda5674-ff51-4a56-9e2a-1b3ca5f06584',
'type': 'match'}]}},
'type': 'player'}],
'links': {'self': 'https://api.pubg.com/shards/kakao/players?filter[playerNames]=de_javu_'},
'meta': {}}
raw data 얻기 전에 먼저 제공되는 데이터 파악하기
과정:
주로 볼 엔드포인트
파악 필요한 것
✅ URL ✅ 특이 파라미터 ✅ 알 수 있는 것