要約
競プロのコンテストの予定をいちいちwebサイトに行って確認するのが面倒なのでコマンド化しました。コードは1行も書いてなくて既存のものを組み合わせただけです。
環境
Ubuntu 18.04
Anaconda 4.6.8
Python 3.7.1
手順
まずCompetitive Programming Contests Calenderにアクセスし、右下のボタンで自分のGoogleカレンダーに追加。
Googleカレンダーにアクセスし、設定ページから追加したカレンダーのカレンダーIDをメモしておきましょう。
次にGoogleCalenderAPIからデータを取得します。
GoogleCalenderAPIのPython QuickStartに従って進めていきます。
Step1ではAPIkeyをダウンロードします。jsonファイルを.pyファイルと同じフォルダにダウンロードします。
Step2では以下のコマンドを実行して必要なパッケージをインストールします。
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Step3で書かれているコードをまるごとコピーして新規ファイル(calender.pyとか適当に名前をつけて)に貼り付けます。このとき変数のcalenderIdを'primary'から先程メモしたカレンダーIDに書き換えてください。また、'credentials.json'に相対パスでも絶対パスでもいいので付け加えてください。
この時点で
python calender.py
を実行するとWebブラウザで認証画面が開き、認証するとコンテストの予定が表示されると思います。
Getting the upcoming 10 events
2019-03-15T22:00:00+09:00 [topcoder] Quantum Computing Series - MM
2019-03-16T10:00:00+09:00 [topcoder] MM 109 (10-Day)
2019-03-19T23:35:00+09:00 [Codeforces] #547 (Div. 3)
2019-03-21T00:00:00+09:00 [topcoder] SRM 753
2019-03-21 [topcoder] Geolocation Algo Challenge
2019-03-21T01:05:00+09:00 [CSA] FII Code #3
2019-03-22T00:35:00+09:00 [Codeforces] #548 (Div. 2)
2019-03-22T21:20:00+09:00 [yukicoder] #208
2019-03-23T00:05:00+09:00 [Codeforces] Educational #62 (Rated for Div. 2)
2019-03-23T13:00:00+09:00 [AtCoder] CADDi 2019 (Japanese)
ここまでで十分な方はこれでOKです。
更に単一コマンド化したかったのでそれを行うパッケージを
pip3 install pyinstall
でインストールします。
インストールできたら以下のコマンドを実行します。
pyinstaller calender.py --onefile --hidden-import googleapiclient
するとdistディレクトリが生成されて、中にcalenderファイルができます。
これを実行すると先程と同じ結果が得られます。
このファイルのpathを~/.bashrcにaliasで書いておけばどこにいてもコマンド一つでコンテストの予定を見ることができます。
alias calender="~/dist/calender"