本日は HoloLens の調査枠です。
前回記事の続きです。
bluebirdofoz.hatenablog.com
今回はパラメータを用いて、HoloLensの特定のディレクトリのファイルをダウンロードしてみます。
なお、HoloLens で利用可能な API は以下の公式ページにまとめられています。
・デバイス ポータル コア API リファレンス(すべての Windows 10 デバイスに共通する API)
docs.microsoft.com
・デバイス ポータル Mixed Reality API リファレンス(HoloLens で利用できるすべての REST API の拡張リスト)
docs.microsoft.com
pythonサンプルコード
HoloLens の特定ディレクトリのファイルを取得する python スクリプトを作成します。
ファイルアクセスの API は以下の /api/filesystem/apps/file です。
/api/filesystem/apps/file は knownfolderid や filename をパラメータとして指定する必要があります
Picuture フォルダから TestImage.jpg を取得する python スクリプトを作成してみました。
・GetPicture.py
# import import requests import base64 import os from datetime import datetime # 実行指定で呼び出されているかチェック if __name__ == "__main__": print('--------------------------- START ---------------------------') # DevicePortal接続のための設定項目 # username:DevicePortalアクセスのユーザ名 # password:DevicePortalアクセスのパスワード # ipaddress:DevicePortalアクセスのIPアドレス # isVerify:証明書の利用(自己証明書なので無視する) username = 'USERNAME' password = 'PASSWORD' ipaddress = '192.168.XX.XXX' isVerify = False # RestAPIアクセスのURLを作成 api = '/api/filesystem/apps/file' url = 'http://' + ipaddress + api # パラメータを指定 payload = {'knownfolderid': 'Pictures', 'filename': 'TestImage.jpg', 'packagefullname': '\\', 'path': '\\Camera Roll', 'op': 'stream'} # RestAPIのURLと設定を指定してGET/POST実行 response = requests.get(url, params = payload, auth=(username, password), verify = isVerify, stream = True) # RestAPIの応答メッセージを受信 response.status_code image = response.content # 受信したメッセージタイプを標準出力で確認 print('--------------------------- RESPONSE JSON ---------------------------') print(response.headers['content-type']) print(response.status_code) # ダウンロードディレクトリの指定 downloadDir = 'C:\\Users\\PCNAME\\Desktop\\hololens\\20190119\\HoloLensAPITest\\HoloLensAPITest\\TestProgram\\Download' fileName = 'download.jpg' # バイナリデータをファイルに書き込み saveFileName = datetime.now().strftime("%Y%m%d_%H%M%S_") + fileName saveFilePath = os.path.join(downloadDir, saveFileName) with open(saveFilePath, 'wb') as saveFile: saveFile.write(image) print('--------------------------- END ---------------------------')
実行してみた結果が以下になります。
指定したダウンロード先フォルダを確認すると、画像ファイルがダウンロードできています。
パラメータの調査方法
例えば、対象ディレクトリの knownfolderid のタグを調べたい場合です。
DevicePortal が実際にこのRestAPIを用いた通信を行っています。
GoogleChrome の場合、F12 でデベロッパーツールを開くことで、通信しているメッセージ内容を確認できます。
メッセージを確認するには[Network]タブを開きます。
例えば、この状態で Picture ディレクトリにあるファイルに対して[Delete]ボタンを押してみます。
すると新しいメッセージがリストに追加され、これをクリックするとその詳細が確認できます。
内容を確認すると、/api/filesystem/apps/file の RestAPI に対して DELETE メッセージを送信しています。
更に URL を読みとくと knownfolderid に Pictures を設定していることが分かります。
次はPOSTメッセージを利用し、ファイルをアップロードしてみます。
bluebirdofoz.hatenablog.com