7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AOJにCLIでsubmitできるツールを作った

Last updated at Posted at 2018-04-26

作ったもの

aocli(AOJ submission tool on CLI)

使い方

セットアップ

Python2.7で動きます。
環境変数からクレデンシャルを取得するので、必要な変数を登録します。
install.shはエイリアスを.bashrcに書き込んでいるだけです。
PyPIに登録したのでpipからインストールできるようになりました

$ pip install aojcli
$ echo 'export AOJCLI_ID=your_user_id_of_AOJ' >> ~/.bashrc
$ echo 'export AOJCLI_PASSWORD=your_password_of_AOJ' >> ~/.bashrc

submit

問題のID、記述言語、ソースコードファイルを指定するだけです。

$ aojcli submit ITP1_1_D C++11 ITP1_1_D.cpp
[submit success]
Access token for checking result : a3d80b96-4fda-432d-a6b2-3af1c6ff043d

status

問題のIDを指定してstatusが確認できます。

$ aojcli status ITP1_1_D
[Status of submission(ITP1_1_D)]
+----------+----------------+-------+---------------------+---------------------+
| judge id | status         | lang  | submit date         | judge date          |
+----------+----------------+-------+---------------------+---------------------+
| #2791323 | STATE_ACCEPTED | C++11 | 2018-04-17 23:18:02 | 2018-04-17 23:18:03 |
+----------+----------------+-------+---------------------+---------------------+

作った背景

仕事はじめてから趣味プログラミングする時間がなくなりました。
ちゃんとした開発はまとまった時間がないと厳しいので、問題集解いてみたりすることにしました。

AOJは過去に使ったことがあるので、まずはそこで適当に色々と解いてみることにしましたが、
解答の提出をするのに毎回ブラウザにコピペするの面倒くさい。
あと、Linux ServerにSSHしてVimでコードを書くのが今の僕の開発スタイルなので、そもそもファイルが今操作してるマシン上にない事が多いです。

というわけで、開発環境からそのままコマンドひとつで、回答を提出できるツールを作ることにしました。

その他

AOJのAPIの制限が厳しく、短時間に複数回認証を行うと弾かれてしまいます。
submitしたらすぐにstatus確認したい気持ちはありますが、10秒程度お待ち下さい。。

自分が使うために作ったので、イケてないのときっとバグがたくさんあります。ご利用は自己責任で。
あと、これ以上の機能拡張は今の所考えていないです。

[参考]
AOJ API Reference

7
2
1

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
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?