Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

iPhoneから録画制御

REST APIの動作確認をしていて思いついたので作成しました。

holo


まじめにiPhoneアプリを作ろうとするとXcode開いてSwiftで~とかになりますが、おおげさなのでPythonistaというアプリで作りました。

このアプリかなりすごくてiPhoneだけでPythonのプログラミングができます。2系も3系も対応しており、環境構築とかそういうものも必要ありません。電卓や簡単なゲームのサンプル等もついており、またグラフも簡単にかけたりします。


今回のソースは(タイムアウト処理とかはしていませんが)以下になります。

ヘッダー情報は昨日のAdvanced REST clientに表示されていたものをコピぺしただけなので適当ですが、XXXXXとしている認証情報とIPアドレスを適宜設定すれば動くと思います。


import ui
import console
import requests     

isRecording = False

def button_tapped(sender):
    h = {"accept":"application/json", "accept-encoding":"gzip, deflate", "accept-language":"en-US,en;q=0.8", "content-type":"application/json", "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36", "Authorization":"Basic XXXXX", "X-CSRF-Token":"XXXXX"}
    
    if isRecording == False:
        global isRecording
        isRecording = True
        u = "https://192.168.0.19/api/holographic/mrc/video/control/start?holo=true&pv=true&mic=true&loopback=true"
        btn = sender.superview['button1']
        btn.title = "Stop"
    else:
        global isRecording
        isRecording  = False
        u = "https://192.168.0.19/api/holographic/mrc/video/control/stop"
        btn = sender.superview['button1']
        btn.title = "Record"
        
    res = requests.post(url=u, headers=h, verify=False)
    
    view = sender.superview['textview1']
    if res.text == "":
        view.text = "The response was empty."
    else:
        view.text = res.text
    
v = ui.load_view()
v.present('sheet')


UIの制御については電卓のサンプルが参考になると思いますが、以下にキャプチャ画像と簡単な説明をつけておきます。

File 2017-08-16 10 42 56

UI付きでスクリプトを生成。


File 2017-08-16 10 43 23

ファイル名を指定してDone。


File 2017-08-16 10 43 43

ボタンは画面したにフィットするようにしました。


File 2017-08-16 10 43 55

ボタンのラベル名とタップしたときのアクションを指定します。


File 2017-08-16 10 44 10

全体のレイアウトはこのような感じ。

textview1の詳細は省略していますがレスポンスが表示されるようになっています。