codeforces에서 제공하는 api를 사용해서 유저가 어떤 문제를 얼마나 풀었는지 간단히 살펴보았습니다.
python requests 모듈을 사용하면 http 요청을 쉽게 할 수 있습니다.
codeforces api 설명은 codeforces 사이트의 api 탭에서 확인할 수 있습니다.
rest 형식으로 설계되어 있습니다.
코드포스 사이트에 나와있는 api에 대한 간단한 소개입니다.
아래 파이썬 스크립트에 handle을 넣으면 원하는 handle이 풀은 문제 정보를 얻을 수 있습니다.
총 몇 문제를 풀었는지 보여줍니다.
문제 난이도별로 몇 문제를 풀었는지를 보여줍니다.
어떤 언어로 몇 문제씩 풀었는지 보여줍니다.
레이팅이 없는 문제는 스킵했습니다.
import requests
#reference : https://codeforces.com/apiHelp/methods#user.status
URL='https://codeforces.com/api/'
method='user.status'
payload={'handle':'tourist'} #give user's handle as payload
URI=URL+method
r=requests.get(URI,payload)
print(r.status_code)
response=r.json()
res=response['result']
solved=[]
for r in res:
if r['verdict']=='OK':
#print(r['problem'])
if r['problem'].get('rating') is None:
print("not rated problem : ",r['problem'])
continue
solved.append([r['problem']['index'],r['problem']['name'],r['problem']['rating'],r['programmingLanguage']])
#def rating(s):
# return s[2]
#solved.sort(key=rating)
solved_per_rating={}
solved_per_language={}
solved_problem={}
count=0
for s in solved:
if solved_problem.get(s[1]) is not None:
continue
count+=1
if solved_per_rating.get(s[2]) is None:
solved_per_rating[s[2]]=1
else:
solved_per_rating[s[2]]+=1
if solved_per_language.get(s[3]) is None:
solved_per_language[s[3]]=1
else:
solved_per_language[s[3]]+=1
print("solved problem count : ",count)
print("solved per problem rating : ",solved_per_rating)
print("solved per language : ",solved_per_language)
이런 식으로 보여줍니다. 스크립트를 수정해서 다른 원하는 정보를 얻을 수도 있겠습니다.