AtCoderの問題解きを楽にする1

以前から気になっていたのですが、
自動でサンプルを取得してテストしてくれるようなツールがあるとのこと。

Windows上に環境構築してみました。

...と思ったらうまくいかず。
環境汚したくないので、あきらめてWSL2+VsCodeを試してみることにします。

参考:
【WSL / WSL2】VSCode×WSLでWindows上にLinux開発環境を構築 - Qiita


以下墓場=========================================================

python環境用意

すでにWindows上にはpythonインスコしてあったので、
改めてvenv環境を構築しました。

$ mkdir AtCoder
$ cd AtCoder
$ python -m venv venv

環境が出来上がったら、Activateできるか確認してみます。

.\activate : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts\Acti 
vate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照し 
てください。
発生場所 行:1 文字:1
+ .\activate
+ ~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts> Set-ExecutionPolicy RemoteSigned -Scope Process
PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts> .\activate
(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts>

途中で権限周りのエラーが出たので、ググって出てきた対応方法で解決しました。
参考:PowerShellでvirtualenvを使うには - Qiita

この場合だと、activateするごとに指定が必要なようなので、今後のツール実行用のコマンドには引数を追加するようにします。

ツールインストール

pipで入れます。

(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts> pip install online-judge-tools
Collecting online-judge-tools
  Downloading online_judge_tools-11.0.0-py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB 451 kB/s 
Collecting colorama<1,>=0.3
  Using cached colorama-0.4.3-py2.py3-none-any.whl (15 kB)
Collecting online-judge-api-client<11,>=10.3.0
  Downloading online_judge_api_client-10.4.0-py3-none-any.whl (169 kB)
     |████████████████████████████████| 169 kB 2.2 MB/s 
Collecting diff-match-patch>=20181111
  Downloading diff_match_patch-20200713-py3-none-any.whl (61 kB)
     |████████████████████████████████| 61 kB 88 kB/s 
Collecting requests<3,>=2
  Downloading requests-2.24.0-py2.py3-none-any.whl (61 kB)
     |████████████████████████████████| 61 kB 157 kB/s 
Collecting jsonschema>=3.2
  Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
     |████████████████████████████████| 56 kB 1.3 MB/s 
Collecting appdirs>=1
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting colorlog>=4.1.0
  Downloading colorlog-4.2.1-py2.py3-none-any.whl (14 kB)
Collecting beautifulsoup4>=4
  Downloading beautifulsoup4-4.9.2-py3-none-any.whl (115 kB)
     |████████████████████████████████| 115 kB 3.2 MB/s 
Collecting lxml>=4
  Downloading lxml-4.5.2-cp38-cp38-win32.whl (3.2 MB)
     |████████████████████████████████| 3.2 MB 3.2 MB/s 
Collecting toml>=0.10
  Using cached toml-0.10.1-py2.py3-none-any.whl (19 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
     |████████████████████████████████| 127 kB 6.8 MB/s 
Collecting certifi>=2017.4.17
  Downloading certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
     |████████████████████████████████| 156 kB 3.3 MB/s 
Collecting chardet<4,>=3.0.2
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
     |████████████████████████████████| 133 kB 3.2 MB/s 
Collecting idna<3,>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 1.7 MB/s 
Collecting six>=1.11.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Requirement already satisfied: setuptools in c:\users\syach\documents\workspace\atcoder\venv\lib\site-packages (from jsonschema>=3.2->online-judge-api-client<11,>=10.3.0->online-judge-tools) (47.1.0)
Collecting pyrsistent>=0.14.0
  Downloading pyrsistent-0.17.3.tar.gz (106 kB)
     |████████████████████████████████| 106 kB 2.2 MB/s 
Collecting attrs>=17.4.0
  Downloading attrs-20.2.0-py2.py3-none-any.whl (48 kB)
     |████████████████████████████████| 48 kB 2.2 MB/s 
Collecting soupsieve>1.2; python_version >= "3.0"
  Downloading soupsieve-2.0.1-py3-none-any.whl (32 kB)
Using legacy setup.py install for pyrsistent, since package 'wheel' is not installed.
Installing collected packages: colorama, six, pyrsistent, attrs, jsonschema, appdirs, urllib3, certifi, chardet, idna, requests, colorlog, 
soupsieve, beautifulsoup4, lxml, toml, online-judge-api-client, diff-match-patch, online-judge-tools
    Running setup.py install for pyrsistent ... done
Successfully installed appdirs-1.4.4 attrs-20.2.0 beautifulsoup4-4.9.2 certifi-2020.6.20 chardet-3.0.4 colorama-0.4.3 colorlog-4.2.1 diff-match-patch-20200713 idna-2.10 jsonschema-3.2.0 lxml-4.5.2 online-judge-api-client-10.4.0 online-judge-tools-11.0.0 pyrsistent-0.17.3 requests-2.24.0 six-1.15.0 soupsieve-2.0.1 toml-0.10.1 urllib3-1.25.10
WARNING: You are using pip version 20.1.1; however, version 20.2.3 is available.
You should consider upgrading via the 'c:\users\syach\documents\workspace\atcoder\venv\scripts\python.exe -m pip install --upgrade pip' command.
(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts>

設定

ログインします。

(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts> oj login -u user -p pswd "https://atcoder.jp/"
[INFO] GET: https://pypi.org/pypi/online-judge-tools/json
[INFO] 200 OK
[WARNING] failed to load the cache in update checking: 'online-judge-api-client'
[INFO] GET: https://pypi.org/pypi/online-judge-api-client/json
[INFO] 200 OK
[INFO] online-judge-tools 11.0.0 (+ online-judge-api-client 10.4.0)
[INFO] service recognized: AtCoderService.from_url('https://atcoder.jp/'): https://atcoder.jp/
[NETWORK] GET: https://atcoder.jp/contests/agc001/submit
[NETWORK] 302 Found
[FAILURE] You are not signed in.
[ERROR] Selenium is not installed. Please run $ pip3 install selenium
[WARNING] Switch to use CUI-based login instead of Selenium
[NETWORK] 302 Found
[NETWORK] GET: https://atcoder.jp/login
[NETWORK] 200 OK
[NETWORK] POST: https://atcoder.jp/login
[NETWORK] redirected to: https://atcoder.jp/home
[NETWORK] 200 OK
[WARNING] AtCoder says: × Welcome, syachineko2.
[INFO] Welcome,
[NETWORK] GET: https://atcoder.jp/contests/agc001/submit
[NETWORK] 200 OK
[SUCCESS] You have already signed in.
[INFO] save cookie to: C:\Users\syach\AppData\Local\online-judge-tools\online-judge-tools\cookie.jar
(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts> oj login --check "https://atcoder.jp/"
[INFO] online-judge-tools 11.0.0 (+ online-judge-api-client 10.4.0)
[INFO] service recognized: AtCoderService.from_url('https://atcoder.jp/'): https://atcoder.jp/
[INFO] load cookie from: C:\Users\syach\AppData\Local\online-judge-tools\online-judge-tools\cookie.jar
[NETWORK] GET: https://atcoder.jp/contests/agc001/submit
[NETWORK] 200 OK
[SUCCESS] You have already signed in.
[INFO] save cookie to: C:\Users\syach\AppData\Local\online-judge-tools\online-judge-tools\cookie.jar
(venv) PS C:\Users\syach\Documents\workspace\AtCoder\venv\Scripts>

エラー出てたのでseleniumも入れます。

(venv) PS C:\Users\syach\Documents\workspace\AtCoder> pip install selenium
Collecting selenium
  Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB)
     |████████████████████████████████| 904 kB 3.2 MB/s 
Requirement already satisfied: urllib3 in c:\users\syach\documents\workspace\atcoder\venv\lib\site-packages (from selenium) (1.25.10)      
Installing collected packages: selenium
Successfully installed selenium-3.141.0
WARNING: You are using pip version 20.1.1; however, version 20.2.3 is available.
You should consider upgrading via the 'c:\users\syach\documents\workspace\atcoder\venv\scripts\python.exe -m pip install --upgrade pip' command.
(venv) PS C:\Users\syach\Documents\workspace\AtCoder>

ただ、この先でうまくタスクの実行ができない・・・。