このAPIを大幅に改良したバージョンを、別のレポジトリにて公開しています。
そのバージョンからKadai Store API
と名称が変更になりました。
Devoirs を使用して Microsoft Teams(Microsoft 365 Education) で出されている課題の情報を取得し、APIを提供します。 この場をお借りして Devoirs の開発に関わった方々に感謝申し上げます。
TCJ2 Kadai Store API は画像の左側の Google Compute Engine で提供されるAPIサーバーです。Google Compute Engine 環境以外でもご利用頂けます。
Parameter | |
---|---|
due | 提出期限が過ぎているものを除く場合はfuture を入れてください。 |
timezone | Asia/Tokyo のみサポートしています。それ以外はUTCとなります。 |
$ curl https://example.com/get?due=future&timezone=Asia/Tokyo \
-H "Authorization: Bearer $ACCESS_TOKEN"
{
"acquisition": "2020-04-01T12:34:56.000Z",
"homeworks": [
{
"subject": "情報工学",
"omitted": "情報",
"name": "第1回課題",
"id": "1234",
"due": "2020-04-01T12:34:56.000Z"
}
]
}
acquisition
はDevoirsから取得した時刻です。
- Node.js 13+
- npm
- Go
デフォルトでApacheやNginxなどを用いてFastCGIとしてサーバーを開く設定になっています。 使用しない場合は、config.yaml
のfcgi-server
をfalse
にしてください。
Devoirs(v0.3.0以前)はCLIアプリですが、アカウントの認証時にGUIを用いるので、RDPやX転送などのGUIアプリを実行できる環境を構築してください。
実行ファイルを実行するときに出るログを使用するので、GUI版のDevoirs(v1.0.0以降)では動作しません。
Releasesのから最新版のソースコードをダウンロードして展開してください。 また、GOPATH以外では正しく動作しない場合があります。
Keys | |
---|---|
update-times | Devoirsを実行して情報を更新する時刻(分) |
server-port | API提供サーバーのポート番号 |
fcgi-server | FastCGIとして動かすかどうか |
get-limit | 10分間にこのAPIにGETできる回数 (無制限なら-1 を入れてください) |
subjects/teams | その教科のTeamsのチーム名 |
subjects/syllabus | シラバスでの教科名 |
subjects/omitted | 省略された教科名 |
discord/alarm | Discordでエラーを通知するかどうか |
discord/admin-id | エラー通知するユーザーのID (alarm をtrue にした方のみ) |
discord/message-format | メッセージフォーマット (alarm をtrue にした方のみ) |
discord/command-prefix | ボットを呼び出すコマンドの接頭辞 (alarm をtrue にした方のみ) |
Keys | |
---|---|
allowed-tokens | 当APIにアクセスを許可するトークン (ここで定めたものを利用者に教えてください) |
discord-token | Discordボットのトークン (config.yaml のdiscord のalarm をtrue にした方のみ) |
./
├─ devoirs/ ................................. devoirs v0.3.0
│ ├─ src ................................... devoirsのソースコード
│
└─ go/ ...................................... $GOPATH
└─ kadai-store-api/ ...................... このレポジトリ
├─ main.go ............................ 主にWebアプリの処理
├─ config.yaml ........................ 基本的な設定
├─ token.yaml ......................... トークンの設定
├─
で終わってるものは、まだ続きがあることを示します。
import { ClassId } from './class';
export type AssignmentId = string;
export type DateTime = string;
export interface Assignment {
id: AssignmentId;
classId: ClassId;
dueDateTime: DateTime;
displayName: string;
isCompleted: boolean;
}
export function compare(a: Assignment, b: Assignment): number {
return a.dueDateTime.localeCompare(b.dueDateTime);
}
これをすることによって、課題の提出期限のデータを扱うことができるようになります。
for (const c of await client.getClasses()) {
console.log(`-`, c.name);
for (const a of await client.getAssignments(c.id)) {
console.log('\t', a['isCompleted'] ? '✔' : '❗', a.displayName);
}
}
を
for (const c of await client.getClasses()) {
console.log(`-`, c.name);
for (const a of await client.getAssignments(c.id)) {
console.log("・" + a.displayName + "\t" + a.id + "\t" + a.dueDateTime);
}
}
に書き換えます。 これをすることによって、課題のIDや提出期限も取得できるようになります。
$ npm install
$ npm start
Devoirsを初めて起動すると、学校で提供されているMicrosoftアカウントのログインを要求するためにGUIウィンドウが表示されます。 ログインした後は、自動認証が行われる1時間後までGUIが起動することは基本的にありません。
$ go build
tcj2-kadai-store-apiという名前で生成されます。Windowsだと拡張子がexeになります。
8080ポートでAPIが提供されます。
DMやグループ、サーバーのどこでも実行することができます。
サーバーが落ちていないかを確かめるコマンドです。 API管理者ユーザー以外でも実行できます。
TCJ2 Kadai Store API
のバージョンを確認するコマンドです。
API管理者ユーザー以外でも実行できます。
サーバーを強制終了させるコマンドです。 API管理者ユーザーのみ実行可能です。