TaskRader は静岡大学の学務情報システム・EdStem・Microsoft Teams の課題情報を一括して取得するアプリケーションです。 コマンドラインによる操作も、WebブラウザによるGUI操作もできます。
現在の課題を全て把握するには、複数の学情やTeams等Webページを確認する必要があります。 TaskRader を使えば、一つの画面で未提出課題の一覧を一括把握できます。
なお TaskRader は課題を統合取得して一覧表示する以外の機能はありません。
CLIとGUIそれぞれの操作方法は以下のとおりです。
サブコマンド login
を用いてユーザ名やパスワード等を taskrader に登録してください。
login
の引数にはプラットフォーム名 ( gakujo
| edstem
| teams
) を指定する必要があります。
例: EdStem へログインする場合
taskrader login edstem
全てのプラットフォームの認証情報を登録する必要はありません (例えば EdStem のみの登録でも課題取得は可能) 。
認証情報は PC固有の値 から動的に生成される共通鍵で暗号化されてローカルに保存されます。
認証情報の登録状況や、認証情報の保存ファイルパスは status
サブコマンドを実行すると確認できます。
taskrader status
サブコマンド list
で未提出課題の一覧を縦に並んだボックス形式で閲覧できます。
各課題の締切日は、締切までの残り時間に応じて強調表示されます。
gui
サブコマンド (または open
) を実行することでWebブラウザが起動し、GUIで操作できます。
本コマンドを実行後、taskrader
プログラムは API サーバとして動作します。
ブラウザでの操作が終わったら Ctrl-C でサーバを終了してください。
# Webブラウザを起動 & APIサーバとして動作
$ taskrader gui
# Webブラウザでの操作が終わったら Ctrl-C で終了してください
^C
▼ 何も認証情報が登録されていない場合、下図のような画面が表示されるでしょう。 案内に従って「認証情報の登録画面へ」ボタンを押してください。
なお、認証情報の登録画面は画面左の 歯車アイコン からも開くことができます。
▼ 登録ボタンを押すとログインが試行され、成功すればグリーンで登録済みの表示になります。
画面左の ホームアイコン を押して課題一覧画面へ移動できます。
▼ 表右上の「課題一覧を再取得する」ボタンを押下することで未提出課題の一覧を再取得できます。
▼ 課題がない場合はこのような表示になります。嬉しいね。
▼ 締め切りまでの時間に応じて下記のように強調表示されます。※ テスト用データです
Linux x86-64 でのみ動作を確認しました。
Teams の課題取得には Selenium WebDriver を使用します。 Ubuntu をご利用なら下記コマンドを実行すれば WebDriver をインストールできます。
sudo apt update && sudo apt install -y chromium-chromedriver
ビルドには Go コンパイラ (>= v.1.17) と Yarn 必要です。
- Go のインストール: https://go.dev/doc/install
- Yarn のインストール: https://classic.yarnpkg.com/lang/en/docs/install
- Yarn のインストールには nodejs, npm が必要です。
nodejs, npm のインストール方法はいくつかの方法があります:- Node バージョンマネージャ nvm を用いる
- apt パッケージマネージャを用いる (
apt install nodejs
)
- Yarn のインストールには nodejs, npm が必要です。
この README.md が配置されているディレクトリで、下記コマンドを実行すればビルドできます。
make
bin/taskrader
に実行可能バイナリが生成されます。
- 一部の実行環境では学情の課題取得に失敗します (
学情の課題取得でエラー: response status was 302 (expect 200)
というエラーが吐かれます)。- この実行環境の条件、および原因は不明です。
学情の課題取得は Go 標準ライブラリの http.Client
を用いて実装されています。
Webブラウザでのログイン時の通信を模倣しました。
EdStem の課題取得にも Go 標準ライブラリの http.Client
を用いました。
こちらは API のエンドポイントを叩いてログインや課題取得を行っています。
Teams の課題取得は Selenium を用いて実装されています。 当初は Microsoft Graph API を用いる予定でしたが、 大学のMSアカウント管理者の許可が必要だったため、打開策として Selenium を用いました。