Skip to content

arumakan1727/taskrader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskRader

TaskRader は静岡大学の学務情報システム・EdStemMicrosoft Teams の課題情報を一括して取得するアプリケーションです。 コマンドラインによる操作も、WebブラウザによるGUI操作もできます。

cmd-hero

cmd-list2

page-list

Why TaskRader

現在の課題を全て把握するには、複数の学情やTeams等Webページを確認する必要があります。 TaskRader を使えば、一つの画面で未提出課題の一覧を一括把握できます。

なお TaskRader は課題を統合取得して一覧表示する以外の機能はありません。

使用方法

CLIとGUIそれぞれの操作方法は以下のとおりです。

CLI操作方法

Step 1. ログイン用の認証情報を登録する

サブコマンド login を用いてユーザ名やパスワード等を taskrader に登録してください。 login の引数にはプラットフォーム名 ( gakujo | edstem | teams ) を指定する必要があります。

例: EdStem へログインする場合

taskrader login edstem

cmd-login

全てのプラットフォームの認証情報を登録する必要はありません (例えば EdStem のみの登録でも課題取得は可能) 。

認証情報は PC固有の値 から動的に生成される共通鍵で暗号化されてローカルに保存されます。

認証情報の登録状況や、認証情報の保存ファイルパスは status サブコマンドを実行すると確認できます。

taskrader status

Step 2. 課題一覧を取得する

サブコマンド list で未提出課題の一覧を縦に並んだボックス形式で閲覧できます。
各課題の締切日は、締切までの残り時間に応じて強調表示されます。

page-list

GUI操作方法

Step 1. Webブラウザを起動する

gui サブコマンド (または open) を実行することでWebブラウザが起動し、GUIで操作できます。

本コマンドを実行後、taskrader プログラムは API サーバとして動作します。 ブラウザでの操作が終わったら Ctrl-C でサーバを終了してください。

# Webブラウザを起動 & APIサーバとして動作
$ taskrader gui

# Webブラウザでの操作が終わったら Ctrl-C で終了してください
^C

Step 2. ログイン用の認証情報を登録する

▼ 何も認証情報が登録されていない場合、下図のような画面が表示されるでしょう。 案内に従って「認証情報の登録画面へ」ボタンを押してください。

page-empty

なお、認証情報の登録画面は画面左の 歯車アイコン からも開くことができます。

▼ 登録ボタンを押すとログインが試行され、成功すればグリーンで登録済みの表示になります。

page-login2

Step 3. 未提出課題の一覧を表示する

画面左の ホームアイコン を押して課題一覧画面へ移動できます。

▼ 表右上の「課題一覧を再取得する」ボタンを押下することで未提出課題の一覧を再取得できます。

page-list-loading

▼ 課題がない場合はこのような表示になります。嬉しいね。

page-list-empty

▼ 締め切りまでの時間に応じて下記のように強調表示されます。※ テスト用データです

page-status-pills

動作要件

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)

この 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 を用いました。