nw.jsでデスクトップ・アプリを作ろうとしている。どのようなものかというと
- 予めマスタリング済みのWAVファイルを用意しておく。
- Canvasに対して30fpsで描画する。描画はWebGL(three.js)で行う。
- それを30fpsでサンプリングし、pngファイルとして保存する。
- 保存したものとWAVファイルをマージしてWebMで動画化する。
- アップロードに必要なメタデータを入力する。
- YouTubeにアップロードする。
昔のメディアプレイヤーで流行ったような音源をベースにしたエフェクトを描いたりとか、FFTの結果を表示したりとかまあそういう音源と同期した動画をある程度自動生成し、YouTubeでアップロードできるようにすると面白いかなぁと。
YouTubeにアップロードするところは今まで勉強してきたYouTube Data APIを使う予定だけれども、アップロードを実現するためにはOAuthによる認証が必要だ。
nw.jsでOAuthを実現するには「インストール済みのアプリケーション用」のフローが使えそうである。これはどうするのかというと
- 別ウィンドウで認証ページを呼び出す。redirect_uriは「urn:ietf:wg:oauth:2.0:oob」を指定する。別ウィンドウを開くときはnative UI APIの「Window」を使用する。これを使用するとloadedイベントやウィンドウのタイトルテキストを読み出すことができる。
<参考>
Window · nwjs/nw.js Wiki · GitHub
- 認証ページからはタイトルテキストに認証コードが埋め込まれるので、それをloadedイベント時にタイトルテキストを読出し、認証コードを取り出す。
- あとは普通にOAuthの処理をする。
上記でできそうなので明日から実装してみようと思っている。OAuthはライブラリを使わず自前で実装するつもりである。