Github
概要
何をするか
-
指定したコンテストの問題・解説ページのスクリーンショットを撮影し, Googleドライブに保存する
-
AtCoder ProblemのInformation APIから各問題のDifficultyを取得し,Difficultyごとに保存
実行方法
-
実行コマンド (例)
- abc280からabc284までのA, B, C問題がダウンロードされる
python -m atcoder_offline --prefix abc --begin 280 --end 284 --problem a b c
-
--clear_done
オプションをつけることで,Notionのデータベースでstatus ==Done
とした問題をGoogleドライブから削除できる
各種設定
.env
-
必ず
.env.example.json
を.env
にリネームする -
.env
にはAPIトークンを保管するため, 絶対にgit管理しない- 代わりに
.env.example.json
をgit管理する
- 代わりに
docker
-
docker-compose内の
selenium
コンテナのイメージを次のように変更する- intelチップの場合,
image:selenium/standalone-chromium
- M1/M2チップ搭載のmacの場合,
image:seleniarm/standalone-chromium
- intelチップの場合,
Goodleドライブ APIの有効化
-
Google Drive APIを有効にし,PyDrive2からGoogleドライブを操作できるようにする
Goodleドライブの保存先
フォルダ構成
-
フォルダ名は固定
-
保存先のディレクトリをオフラインで使用可能にしておく
フォルダIDの取得
-
env.json
のCOLOR_TO_DIR
に,それぞれの色に対応するフォルダIDを設定する -
フォルダIDは,フォルダを開いてURLを確認することで得られる
https://drive.google.com/drive/folders/<フォルダID>
Notion APIの有効化
-
https://www.notion.so/my-integrations からインテグレーションを作成し,トークンを取得
-
******************の部分をコピーし,
env.json
のTOKEN_NOTION
に割り当てる
参考 (公式) https://developers.notion.com/docs/create-a-notion-integration
Notion データベースの用意
データベースの作成
インテグレーションの接続
- コネクトの追加から,作成したインテグレーションを追加する

結果
statusの更新
参考
macの場合,ベースイメージをseleniumではなくseleniarmを使う (docker-compose)
Seleniumを使ってスクリーンショット
Googleドライブの操作
beautifulsoup