npocccties / chibichilo

CHiBi-CHiLOは,インターネットに散在するビデオを,トピック単位で整理,管理し,組み合わせて,複数のLMSにビデオ教材として提供するオンライン学習支援ツールです.
https://npocccties.github.io/chibichilo/
MIT License
6 stars 3 forks source link

zoomから動画をインポートする機能の設計調査 #460

Closed hATrayflood closed 2 years ago

hATrayflood commented 3 years ago

~Master account APIs について~

~https://marketplace.zoom.us/docs/api-reference/master-account-apis~ ~https://www.cdatablog.jp/entry/2020/08/17/085924#注意したいこと~

~マスターアカウントapiを使うには、あらかじめzoom営業に連絡しておく必要がある?~ ~ユーザーリストの取得はマスターアカウントapiではないので、連絡は不要かも。~

jwt認証

apiにアクセスするにはトークンが必要で、トークンはapiキーと任意の有効期限から生成できる。 本番ではトークンを都度生成する運用となるため、apiキーは機密情報となる。 ~apiシークレットはjwt認証では使われてない?~ 必要だった。

バッチ処理全体の冒頭で生成したトークンを使いまわしたいところだが、動画ファイルのダウンロードにもトークンが必要になり、ファイルサイズを考えると相応に時間がかかると予想されるため、apiアクセスの都度トークンを生成するほうがよさそう。

バッチ処理の流れ

※リストを取得するapiはいずれもページングに関するパラメータが必要で、一回のリクエストですべてのデータが取れるとは限らない。

バッチの自動実行について

node-cronnode-scheduleでできそう。どちらもcronと同じ書式でスケジュールを設定可能。 要件としては1日1回実行ではあるが、昼に1時間や2時間おきに実行するなどの設定もアリか。運用はさまざまだと思われるため、環境変数から設定できるのが望ましい。 また、スケジューラはサーバープロセス内で動作できるのが望ましい。個別の起動コマンドやスクリプトなどは不要にして、サーバ起動と同時にスケジューラも動き始めるようにしたい。

uiの変更

ユーザーログイン時の処理

ユーザー設定画面

環境変数の追加

db定義の変更

参考資料

Zoom API - API Reference - Zoom Developer - Technical Documentation and Reference https://marketplace.zoom.us/docs/api-reference/zoom-api

Master account APIs - API Reference - Zoom Developer - Technical Documentation and Reference https://marketplace.zoom.us/docs/api-reference/master-account-apis

クラウド レコーディング – Zoom ヘルプセンター https://support.zoom.us/hc/ja/articles/203741855-Cloud-Recording

記録管理 – Zoom ヘルプセンター https://support.zoom.us/hc/ja/articles/205347605

Zoom APIを試してみる JWT編 https://qiita.com/nanbuwks/items/ed74a76a0f294c0bf4ed

ZoomのAPIを使ってみた - Qiita https://qiita.com/akihiko_sugiyama/items/806e69dabc41c90677bc

Zoom APIの使い方:OAuth・JWT による認証方法・Postman での実行方法 - CData Software Blog https://www.cdatablog.jp/entry/2020/08/17/085924

Zoomの録画データをダウンロードする - 芝浦工業大学 学術情報センター https://web.sic.shibaura-it.ac.jp/Rec_data_download

Node.jsで定期実行メモ - Qiita https://qiita.com/n0bisuke/items/66abf6ca1c12f495aa04

Node-Schedule で cron ライクなスケジュールジョブを実現する : まだプログラマーですが何か? http://dotnsf.blog.jp/archives/1077733140.html

hATrayflood commented 3 years ago

認証方法について

クラウド レコーディングについて

hATrayflood commented 3 years ago
dynamis commented 3 years ago

Internal Meeting メモ (as is)

処理の流れ

確認事項

実装検討

dynamis commented 3 years ago

開発スケジュール

knokmki612 commented 3 years ago

「トピック一覧画面で,トピックを選択してブックを作成できるようにする」 トピック一覧画面に「トピックを選択してブックを作成」ボタンを付けてクリックしたらトピック選択モード (ページ) に以降。選択後に「ブックを作成する」ボタンを押すとブック作成され、その編集ページに移行。

一覧画面で複数選択の概念を導入するという点は #411 に関連しています(#411 のissueを切り分けたほうがよさそう)

470 に分離しました

hATrayflood commented 3 years ago

処理の流れ

* 自動バッチで zoom 管理者権限貰って取ってくる
* 各 meeting の主催者メールアドレスを取得する
* 対応する LTI / CC ユーザを見つける
* そのユーザの Topic として登録する
* 動画を Wowza に UP する
* Zoom から動画を削除 (ゴミ箱に移動)

確認事項

* Vimeo 対応などを行って複数 VOD 対応した場合に Zoom import はいずれか一つに決め打ちなのか、ユーザ毎の設定に対応するのか
  * Zoom import はバッチ処理なので、ユーザ毎に選択させるなら事前に決めさせておかなければならない

管理者がインポート先を決めておく。(ユーザごとは将来的な話)

* メールアドレス対応は Zoom 録画 import 時点での都度対応だけでいずれかのアドレスの変更への追従などは行わない

対応しない

* 「制限事項(開発概要B)が行われない」の前半が日本語になっていない
  * メールアドレス対応がない場合とか変更があった場合のこと?インポート時に存在するメールアドレスにのみ割り当てて他は放置でいいのでは?
  * 後半は Wowza 動画は Zoom import に限らず制限できないだけの話

更新していただく

* LTI 連携のアドレス登録について
  * 「CHiBi-CHiLOのユーザーテーブルにはメールアドレスをもうける」を実装・導入
  * 一度以上 LTI から該当ユーザがログインして貰う必要がある
  * その後に録画した Zoom 動画を自動インポート

これでOK

* 対応付けられた CC ユーザ以外の動画の扱いは?
  * 対応付けられた CC ユーザのある動画だけをインポートで良いか?
  * 未ログインユーザは一度ログインしたら一括インポートできる
    * LTI ログインしたら勝手に既存の全 Zoom 動画をインポート・削除して良いのか?
    * ログイン時にユーザに対して通知・承認を得るか?「この CC では Zoom 空のインポート機能が有効化されています、自動的に [user@example.com](mailto:user@example.com) で録画した Zoom の動画を全てインポート・Wowza にアップロード・Zoom 空削除してよろしいですか?」という確認をして OK だったらオンにするか?
    * Zoom から削除はしないがインポートはする場合にインポート済動画の識別をどうするか。それをするならインポート済動画リストを保持する必要はある。但し無限に増えるインポート済リストを保持し続けたくない。インポート対象を直近 x ヶ月とかに絞るか?

確認する必要はない。自動で全部やる。 自動削除しないはありかもしれない。熊大に確認 直近インポートnか月は管理側で設定する。熊大に確認

実装検討

* 「Zoom録画で作成したトピックはそれがわかるようにアイコン等つける」の実装方法
  * 見た目で目立たせる
    * アイコン付けるなら Topic のデータとしてフィールドを追加するか JSON の中にフラグを立てる必要がある。フィールド追加ならトピックの検索での絞り込みもありえるがどうしたいのか
      * 同じ問題は PPT audio 動画のインポートにもあったので、どうせやるならそっちもフラグ立てて同じ対応をすべき (沢山フィールド追加していくことになるのは嫌じゃない?大丈夫?)
    * トピックタイトルの Prefix 文字列 (絵文字 例えば :ビデオカメラ: 📹)  で目立たせる (フィールド追加など DB 影響なし)
  * 単純に日付的に目立たせる
    * 更新日時を現時刻でインポートすることで分かり易くする (Zoom の録画日付を無視してインポートするかどうか?)

何百もコンテンツがあって管理が大変。 仕様待ち。

* 「トピック一覧画面で,トピックを選択してブックを作成できるようにする」
  * トピック一覧画面に「トピックを選択してブックを作成」ボタンを付けてクリックしたらトピック選択モード (ページ) に以降。選択後に「ブックを作成する」ボタンを押すとブック作成され、その編集ページに移行。

これでOK

* Zoom 動画削除後にゴミ箱から復活させられた場合問題
  * Resource Object 側にインポート元の Zoom 動画 ID を入れるか?

やはりインポート済みリストは必要

* zoom 動画インポート時の絞り込み処理
  * ゴミ箱内ではない動画リストを取得
  * メールアドレスをリストして CC ユーザと突き合わせ、該当するものだけ選択
  * 更にインポート済動画を除外
  * 残ったものだけインポート処理を行う

* 複数のLMSからのCHiBi-CHiLOにアクセスした場合のユーザー突き合わせへの応用
  * これは Zoom 対応の要件外だと思うがコメント
  * 久野さんの方で Link Object 作る話に関連するので事前共有 (メールアドレスフィールドは追加すること)
  * 既存メールアドレスリストと付き合わせることで、既存ユーザがいたら紐付け、いなければ新規作成の流れが出来る
  * 但し、ユーザが LMS の情報を保持している場合はそれを複数 LSM のデータを入れられる配列にするのか別テーブル(したくない)にするのか何かの対応が必要
hATrayflood commented 3 years ago

マスターアカウントapiの制約を解除しないことには話が進みそうにないので、次のミーティングで開発に使えるzoom管理者アカウントを相談する。

dynamis commented 3 years ago

打ち合わせで確認したこと (に少し勝手に追記した) メモ:

今後について

ties-makimura commented 3 years ago

必要があればユーザ単位で削除のオンオフが出来ても良いのかもだがひとまずシステム単位で進める (そうしないと動画が残ってるのを減らしたいという大学側の希望が叶わない)

Zoom インポート後の動画削除について,システム単位であれば,オンだけでなく,オフも今回できるであっていますか?

hATrayflood commented 3 years ago

Zoom インポート後の動画削除について,システム単位であれば,オンだけでなく,オフも今回できるであっていますか?

環境変数 ZOOM_IMPORT_AUTODELETE が定義されていれば自動削除するという仕様にしてます。 自動削除したくなければ、ZOOM_IMPORT_AUTODELETE を定義せずに運用すれば良いです。

hATrayflood commented 3 years ago

実装作業は以下のissueで

dynamis commented 3 years ago

@hATrayflood projects https://github.com/orgs/npocccties/projects/1 に各 issue のカードを (取り組み状況に応じた列に) 配置してくださいませ

dynamis commented 3 years ago

実装段階に入っており詳細調整は各 issue の方で進められているのでこちらはクローズしても良いのでは? (設計変更とか最終的な設計のドキュメント化とかの議論があるならそれはそれで別 issue で良さそうに思う)