LoginSignup
5
4

More than 5 years have passed since last update.

codeforcesのAPIから色んな情報が取れるようになったのを試した

Last updated at Posted at 2014-06-21

はい。
http://codeforces.com/api/help

test.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import urllib2
import json

#データを取りに行く
res=urllib2.urlopen('http://codeforces.com/api/user.info?handles=clarinet758')
#json形式で扱えるようにする
f=json.load(res)
example.json(返って来てるデータ例)
{
    u'status': u'OK',
    u'result': [
        {
            u'registrationTimeSeconds': 1339342427,
            u'rating': 1040,
            u'handle': u'clarinet758',
            u'country': u'Japan',
            u'rank': u'newbie',
            u'maxRank': u'specialist',
            u'lastOnlineTimeSeconds': 1403338836,
            u'contribution': -8,
            u'maxRating': 1414
        }
    ]
}
test.py
#単純に今すぐとあるデータを表示させるならprintで出力できます
#コレで現在のレーティング
print f[u'result'][u'rating']

#Integer同士のデータなら引き算で差分出したり出来ます
#コレでレーティングの最高値の時と現在の差分を出します
print f[u'result'][u'maxRating'] - f[u'result'][u'rating']

user.infoを叩くと現在の個人データ、profileで見える情報とほぼ同等かな?

user.ratedListを叩くとユーザ名やレーティングなど何か解析したりとか目的がないと個人使用では用途があまりないかも?
参考先さま http://tubo028.hatenablog.jp/entry/2014/06/15/134848

user.ratingを叩くとコンテストの参加記録。おそらく個人プロフィールのContestsで見えるものとほぼ同等。参加登録だけではなくsubmissionした回でないとデータは出てこない

user.statusで個人のsubmision履歴。"verdict":"OK"が多分AC出たもの。

いまのところ http://codeforces.com/problemset/standings で表示されるような個人の解いた問題数の呼び出しは分からない。OKを数えると同じ問題を違う言語使ったのとか簡潔に書きなおしたとかもカウントしそうなので必死に工夫して除外させるか、API追加公開を待つかだと思います。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4