このリポジトリには、AtCoder 上でのコードゴルフの記録更新を報告する Twitter bot @atgolfer1 のスクリプトが置かれています。
$ git clone https://github.com/kmyk/atgolfer
$ cd atgolfer
$ pip3 install -e .
$ cp .env.tmp .env
$ # set ATCODER_ID and ATCODER_PASSWORD to .env
$ python3 main.py --verbose --directory=./ --use-atcoder-problems --only-abc00x
[*] load cache from ./shortest_codes.json
[*] load cache from ./latest_submission_ids.json
[*] load cache from ./last_status_id.json
[*] GET https://atcoder.jp/contests/archive?lang=ja
[*] GET https://atcoder.jp/contests/archive?lang=ja&page=1
[*] GET https://kenkoooo.com/atcoder/resources/contests.json
[*] GET https://kenkoooo.com/atcoder/resources/merged-problems.json
[*] 1/36: AtCoder Beginner Contest 001. A. 積雪深差
[*] 2/36: AtCoder Beginner Contest 001. B. 視程の通報
[*] 3/36: AtCoder Beginner Contest 001. C. 風力観測
[*] 4/36: AtCoder Beginner Contest 001. D. 感雨時刻の整理
[*] 5/36: AtCoder Beginner Contest 002. A. 正直者
[*] 6/36: AtCoder Beginner Contest 002. B. 罠
[*] 7/36: AtCoder Beginner Contest 002. C. 直訴
[*] 8/36: AtCoder Beginner Contest 002. D. 派閥
[*] 9/36: AtCoder Beginner Contest 003. A. AtCoder社の給料
...
[*] 33/36: AtCoder Beginner Contest 009. A. 引越し作業
[*] 34/36: AtCoder Beginner Contest 009. B. 心配性な富豪、ファミリーレストランに行く。
[*] 35/36: AtCoder Beginner Contest 009. C. 辞書式順序ふたたび
[*] 36/36: AtCoder Beginner Contest 009. D. 漸化式
[*] store cache to ./shortest_codes.json
[*] store cache to ./latest_submission_ids.json
[*] store cache to ./last_status_id.json
Twitter bot @atgolfer1 を運用するには、bot のための Twitter のアカウントと、5 分おきぐらいにスクリプトを実行してくれるような実行環境が必要です。 具体的には以下が必要となります。
Twitter のアカウントは普通に作って、認証情報はいい感じにしてください。
4 つの認証情報が必要です。これらは .env
に記載してください。
$ python3 main.py --post ...
サーバについては、性能は求められないのでなんでもいいから VPS (例: VPS(仮想専用サーバー)|さくらインターネット の一番安いやつやその次に安いやつ) を借り、crontab に以下のような設定をするのがよいでしょう。
$ crontab -l
# m h dom mon dow command
0,5,10,25,30,35,40,55 * * * * flock -n /home/ubuntu/atgolfer/lock python3 /home/ubuntu/atgolfer/main.py --directory /home/ubuntu/atgolfer --post --use-atcoder-problems
15,45 * * * * flock -n /home/ubuntu/atgolfer/lock python3 /home/ubuntu/atgolfer/main.py --directory /home/ubuntu/atgolfer --post
注意点:
--post
を付けて実行するとすべての問題についてツイートがされてしまうので、まずは --post
なしで実行するようにするTWITTER_ACCESS_TOKEN_SECRET
とかは実質パスワードなので漏らさないように注意するAPI key
と API key secret
をメモする→TWITTER_CONSUMER_KEY
と TWITTER_CONSUMER_SECRET
になるhttps://twitter.com
等にしておけばよいAccess Token
と Access Secret
をメモする→TWITTER_ACCESS_TOKEN
と TWITTER_ACCESS_SECRET
になる