kotatsugame / atgolfer

https://twitter.com/atgolfer1
MIT License
2 stars 1 forks source link

AtGolfer

Travis.org License Twitter Follow

このリポジトリには、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 を運用する

Twitter bot @atgolfer1 を運用するには、bot のための Twitter のアカウントと、5 分おきぐらいにスクリプトを実行してくれるような実行環境が必要です。 具体的には以下が必要となります。

  1. Twitter bot 用のアカウントを作る
  2. Twitter bot を自動で操作するための認証情報を得る
  3. スクリプトを実行するためのサーバを借りる
  4. そのサーバ上でスクリプトが自動実行され Twitter に投稿されるように設定をする

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

注意点:

Twitter API の設定

  1. API を使用したいアカウントにログインした状態で Twitter の Developer Portal にアクセスする
  2. App を作る。このとき表示される API keyAPI key secret をメモする→TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRET になる
  3. User authentication のセットアップをする。権限は Read and Write で、callback URL は https://twitter.com 等にしておけばよい
  4. Keys and tokens で Access Token and Secret を作る。このとき表示される Access TokenAccess Secret をメモする→TWITTER_ACCESS_TOKENTWITTER_ACCESS_SECRET になる