概要
- オフラインでAtCoderの問題・解説ページを見れる環境を作る
何をするか
-
指定したコンテストの問題・解説ページのスクリーンショットを撮影し,Googleドライブに保存する
-
AtCoder ProblemのInformation APIから各問題のDifficultyを取得し,Difficultyごとに保存
- Notionのデータベースにノートを用意する
-
実行コマンド
- abc280からabc284までのA, B, C問題がダウンロードされる
python -m atcoder_offline --prefix abc --begin 280 --end 284 --problem a b c
--clear_doneオプションをつけることで,NotionのデータベースでDoneとした問題をGoogleドライブから削除できる
- 必ず
.env.example.jsonを.envにリネームする - .envファイルにはAPIトークンを保管するため,絶対にgit管理しない
-
docker-compose内の
seleniumコンテナのイメージを次のように変更する- intelチップの場合,
image:selenium/standalone-chromium - M1/M2チップ搭載のmacの場合,
image:seleniarm/standalone-chromium
- intelチップの場合,
-
Google Drive APIを有効にし,PyDrive2からGoogleドライブを操作できるようにする
フォルダ構成
-
フォルダ名は固定
-
保存先のディレクトリをオフラインで使用可能にしておく
フォルダIDの取得
-
env.jsonのCOLOR_TO_DIRに,それぞれの色に対応するフォルダIDを設定する -
フォルダIDは,フォルダを開いてURLを確認することで得られる
https://drive.google.com/drive/folders/<フォルダID>
-
https://www.notion.so/my-integrations からインテグレーションを作成し,トークンを取得
-
******************の部分をコピーし,
env.jsonのTOKEN_NOTIONに割り当てる
参考 (公式) https://developers.notion.com/docs/create-a-notion-integration
データベースの作成
- プロパティに
contest,color,statusを持つデータベースを作成する
インテグレーションの接続
- コネクトの追加から,作成したインテグレーションを追加する
実行結果
statusの更新
macの場合,ベースイメージをseleniumではなくseleniarmを使う (docker-compose)
https://qiita.com/xy2e45/items/2895fe98e79fe9da3d9c
Seleniumを使ってスクリーンショット
https://tech-lab.sios.jp/archives/28840
Googleドライブの操作
https://note.nkmk.me/python-pydrive-folder/
beautifulsoup
https://senablog.com/python-bs4-search/ https://qiita.com/d_m/items/f477c6665ec69dfaf594 https://pystyle.info/scraping-beautiful-soup-how-to-refer-elements/#outline__11









