はむ吉(のんびり)の練習ノート

プログラミングとことばに関する話題を中心に,思いついたこと,試してみたこと,学んだことを,覚え書きを兼ねてまとめます.その際に役立った,技術書,参考書,辞書,機器などの紹介も行います.

APIを利用して、CodeforcesとTopCoder SRMでのレーティング変化を取得するPython 3スクリプト

ふと思い立ち、既出かもしれませんが、プログラミングコンテスト(のサイト)であるCodeforcesTopCoder SRMにおけるレーティングとその変化を簡単に取得するためのPython 3スクリプトを書きました。メモを兼ねて、とりあえず載せておきます。

きっかけ

このところ、競技プログラミングの問題を解く以外の目的でプログラミングをすることが、少なくなってきました。そこで、久々に何かしらのツールを作ってみようと思いました。まずは、競技プログラミングがらみでちょっとしたものを書くことにしました。

とりあえずの題材として浮かんだのが、コンテスト後によくみられる、1234 → 5678 (+4444)のようなレーティング変化の表記でした。当初はスクレイピングが必要かと思っていましたが、よく調べたところCodeforces API - CodeforcesTopCoder API · Apiaryの存在を知りました。そこで、これらと便利なPython用HTTPライブラリRequestsを利用して、レーティング変化を自動的に取得するスクリプトを書きました。

動作環境

以下の環境での動作を確認しました。

  • Windows 10
  • Python 3.4.5
  • Requests 2.10.0
    • たとえば、pip install requestsでインストール可能です。Anacondaにはすでに含まれているかもしれません。

スクリプト

以下の通りです。念のため、ライセンスはCC0としておきます。例外処理等が不十分です。

実行結果の例は、次の通りです。

Codeforces: 1445 -> 1478 (+33)
TopCoder SRM: 803 -> 787 (-16)

感想

久しぶりにWeb APIに触れた気がします。AtCoderにもこのような公式APIがあればなあと思っています。競技プログラミングを快適にするようなウェブサービス・ツールがたくさんの方により開発・発表されていますが、私もそういったものを作ってみたいものです。ただ、私の場合には、問題演習などを通じて、自分の(競技)プログラミング力を向上させるのが先かもしれません。