前編では、最終的に単品ファイルの画像解析を行った。
後編では、複数ファイルがある場合のサンプルを紹介する。
MAGGELAN BLOCKS
MBの各ブロックは、原則としてハードコードされたURLに対してアクセスするように設計されている。単品で実行する場合には条件分岐や、ワイルドカードが使えない。(2016/04/06現在)
動的に挙動を変えたい場合には、外部からボードのAPIを叩くことで任意の変数を渡すことで、特定ブロック内のフィールドに任意の文字列を渡すことができる。
${hoge}
という記述が、ブロック内で利用可能となっており。
APIでPOSTする際に、 hogeに対して値を渡すと、ブロック内で展開される。
今回のフローでは、1フローにつき1画像の解析とBQへの1インサートとなっている。100枚の画像解析を行いたい場合には、100リクエストする必要がある。
ボードのAPIの叩き方
各ボードはユニークなURLが割り当てられている。このURLに対して、トークン付きのPOSTを行うことでAPIを叩くことができる。
トークンの作成方法
トークンコピーしておいてください。
ブロックに変数を埋め込んでおく
今回、GCSのフルパスを外部から指定したいので、VisionAPIのブロック内の設定に変数を埋め込みます。
2)の項目に
${gcs_url}
の文字列を書いておきます。
忘れずにボードを保存します。
単発叩いてみましょう。
wget --post-data="" https://<YOUR-BORAD-URL>/admin/schedules/2.json?api_token="<YOUR-API-TOKEN>"&gcs_url=gs://<YOUR-BUCKET>/<SOMEWHERE>/<FILE-NAME>
横で、ボードのWebUI開いておくと勝手にフローがキックされるのがワカリマス。
画像一杯叩くには?
地味にめんどくさいです。
手順
- GCSに複数ファイルをアップ
- ファイルリストを用意する
- ひたすらキックする。
ファイルをアップロードする
今回は、善意の提供者より頂いた3枚の画像をアップロードしてみる
➜ sample ls
saisyu1.jpg saisyu2.jpg saisyu3.jpg
➜ sample gsutil cp ./*.jpg gs://<YOUR-BUCKET>/mb_img_src/
Copying file://./saisyu1.jpg [Content-Type=image/jpeg]...
Uploading gs://<YOUR-BUCKET>/mb_img_src/saisyu1.jpg: 53.88 KiB/53.88 KiB
Copying file://./saisyu2.jpg [Content-Type=image/jpeg]...
Uploading gs://<YOUR-BUCKET>/mb_img_src/saisyu2.jpg: 57.71 KiB/57.71 KiB
Copying file://./saisyu3.jpg [Content-Type=image/jpeg]...
Uploading gs://<YOUR-BUCKET>/mb_img_src/saisyu3.jpg: 70.21 KiB/70.21 KiB
ファイル名を列挙したファイルを作る
$ ls -1 > filelist.txt
$ cat filelist.txt
saisyu1.jpg
saisyu2.jpg
saisyu3.jpg
リストに従ってキックshell
ファイルリストからファイル名抜いてきて、適当にwgetしちゃいましょう。
#!/bin/sh
MYTOKEN="<YOUR-TOKEN>"
SRCFILE=./filelist.txt
BASEURL="https://<YOUR-BOARD-URL>/admin/schedules/2.json?"
QUERY="api_token="$MYTOKEN"&gcs_url=gs://<YOUR-BUCKET>/<SOMEWHERE-PATH>/"
echo $BASEURL
while read line; do
wget --post-data="" $BASEURL$QUERY$line
done < $SRCFILE
➜ sample ./go_visionAPI.sh
こんな感じで、WebUI操作せずにフローが勝手に走っていきます。ちょいちょい失敗しますね。
結果発表
ラベル抜いてみました。
その1
eyewear
sunglasses
hair
vision care
glasses
その2
lingerie
clothing
photo shoot
dress
まとめ
ランジェリーだそうです。www