2.4 KB · 纯文本展示
#!/bin/bash
# helper for iphone-use daemon
HOST="http://127.0.0.1:44321"
TOKEN="$(cat "$HOME/.iphone-use/phone-daemon-token")"
AUTH="Authorization: Bearer $TOKEN"
CTL="X-Phone-Control: 1"
OWN="X-Phone-Owner: airbeep-esign"
case "$1" in
el)
curl -s -m 45 -H "$AUTH" "$HOST/agent/elements?scope=app" > /tmp/iph_el.json
python3 - <<'PY'
import json
d=json.load(open('/tmp/iph_el.json'))
for e in d.get('elements',[]):
lbl=(e.get('label') or '')[:55]; val=(e.get('value') or '')[:45]
print(e.get('index'), e.get('kind'), repr(lbl), repr(val), e.get('rect'))
PY
;;
els) # app scope, only labeled
curl -s -m 45 -H "$AUTH" "$HOST/agent/elements?scope=app" > /tmp/iph_el.json
python3 - <<'PY'
import json
d=json.load(open('/tmp/iph_el.json'))
print(json.dumps(d.get('ax_stats'),ensure_ascii=False), 'app=', (d.get('elements') or [{}])[0].get('label'))
for e in d.get('elements',[]):
lbl=(e.get('label') or '').strip(); val=(e.get('value') or '').strip()
if lbl or val:
print(e.get('index'), e.get('kind'), repr(lbl)[:60], repr(val)[:50], e.get('rect'))
PY
;;
tap) # tap element index
SNAP=$(python3 -c "import json;print(json.load(open('/tmp/iph_el.json')).get('snapshot',''))")
python3 - "$2" "$SNAP" "$HOST" "$TOKEN" <<'PY'
import json,sys,urllib.request
idx=int(sys.argv[1]); snap=sys.argv[2]; host=sys.argv[3]; tok=sys.argv[4]
body=json.dumps({"type":"tap","element":idx,"snapshot":snap}).encode()
req=urllib.request.Request(host+"/agent/input?return=delta",data=body,method="POST",
headers={"Authorization":"Bearer "+tok,"Content-Type":"application/json","X-Phone-Control":"1","X-Phone-Owner":"airbeep-esign"})
try:
r=json.load(urllib.request.urlopen(req,timeout=45))
except Exception as ex:
print("ERR",ex); sys.exit(1)
print("ok",r.get("ok"),r.get("error") or "", r.get("outcome") or "")
for e in (r.get("elements") or [])[:30]:
if e.get('label') or e.get('value'): print(" ",e.get('index'),e.get('kind'),repr((e.get('label') or '')[:45]))
PY
;;
in) # raw input json
curl -s -m 60 -H "$AUTH" -H "Content-Type: application/json" -H "$CTL" -H "$OWN" -X POST "$HOST/agent/input?return=delta" -d "$2" | head -c 3000
;;
st)
curl -s -m 15 -H "$AUTH" "$HOST/agent/status" | python3 -c "import json,sys;d=json.load(sys.stdin);print({k:d.get(k) for k in ['drivable','device_state','mode','owner','hint']})"
;;
shot)
curl -s -m 45 -H "$AUTH" "$HOST/agent/screenshot" -o "$2" && ls -l "$2"
;;
esac