파이썬 json및 urllib 파싱관련해서 질문드립니다. (리그오브레전드 api 사용)
조회수 1396회
import urllib.request
import json
def get_encryptedID(input_name):
apikey = "api키값입니다."
encode_name = input_name.replace(" ", "%20")
urls = 'https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + encode_name + '?api_key=' + apikey
if(urllib.request.urlopen(urls).getcode() == 200):
urls_data = urllib.request.urlopen(urls) # url을 열어온 정보
dict_data = data_process(urls_data) #url정보 -> dict
return dict_data['id'], dict_data['name']
else:
return -1, -1
def print_info(dict_data):
print(dict_data['tier'], dict_data['rank'])
print("승 :", dict_data['wins'], "패 :", dict_data['losses'], "승률 :", round(dict_data['wins']/(dict_data['wins']+dict_data['losses'])*100, 2), "%" )
def print_unrank():
print("Unrank")
def data_process(f):
jsonString = f.read().decode("utf-8")
if(len(jsonString) < 10):
return False
#print("jsonstring : ", jsonString)
if(type(json.loads(jsonString)) == list):
data = json.loads(jsonString)[0]
elif(type(json.loads(jsonString)) == dict):
data = json.loads(jsonString)
#print(data)
return data
def get_summoner_data(encryptedID):
apikey = "api키값입니다."
urls = 'https://kr.api.riotgames.com/lol/league/v4/entries/by-summoner/' + encryptedID + '?api_key=' + apikey
urls_data = urllib.request.urlopen(urls) # url을 열어온 정보
dict_data = data_process(urls_data) # url정보 -> dict
if(dict_data == False):
print_unrank()
else:
print_info(dict_data)
def run():
summoner_name = str(input())
encryptedID, summoner_name = get_encryptedID(summoner_name)
if(encryptedID == -1):
print("Data not found - summoner not found")
print(summoner_name)
get_summoner_data(encryptedID)
run()
리그오브 레전드 api(https://developer.riotgames.com/)를 이용해서 간단한 전적 검색을 해보려고 하는데요...
제가 json이나 urllib를 잘 몰라서... 복잡하게나마 만들어 봤는데요...
닉네임을 검색해서 전적 및 티어를 나타내는 코드인데 닉네임이 존재하지 않는 경우 api 자체에서 response코드를 404로 보내주는데 그거를 어떻게 예외 처리를 하는지를 모르겠어서 질문드립니다.
. . .
def get_encryptedID(input_name):
apikey = "api키값입니다."
encode_name = input_name.replace(" ", "%20")
urls = 'https://kr.api.riotgames.com/lol/summoner/v4/summoners/by-name/' + encode_name + '?api_key=' + apikey
if(urllib.request.urlopen(urls).getcode() == 200):
urls_data = urllib.request.urlopen(urls) # url을 열어온 정보
dict_data = data_process(urls_data) #url정보 -> dict
return dict_data['id'], dict_data['name']
else:
return -1, -1
여기서 urllib.request.urlopen(urls).getcode() == 200 이게 404가 되면 그냥 오류가 떠서 if문 자체에서 오류로 막히게 되는데... 해결방법을 잘 모르겠습니다..
그리고 추가로 하나더 질문하자면 닉네임을 한글로 검색하면 아스키 코드 변환 오류가 뜨는데 어떻게 해결 해야 할까요
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력