"""PHONE_DEMO_TOKEN= SCREEN_FILE=screen.png python create-demo.py""" import json, mimetypes, os, pathlib, time, urllib.request base = 'https://phone-demo.jetskibay.com' token = os.environ['PHONE_DEMO_TOKEN'] screen = pathlib.Path(os.environ['SCREEN_FILE']) kind = mimetypes.guess_type(screen.name)[0] or 'image/png' headers = {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json'} def api(path, data=None): req = urllib.request.Request(base+path, data=json.dumps(data).encode() if data else None, headers=headers) with urllib.request.urlopen(req) as response: return json.load(response) upload = api('/api/uploads', {'content_type': kind}) with urllib.request.urlopen(urllib.request.Request(upload['upload_url'], data=screen.read_bytes(), method='PUT', headers={'Content-Type': kind})) as response: response.read() job = api('/api/demos', {'upload_id': upload['upload_id'], 'output': 'video' if kind.startswith('video/') else 'image'}) while job['status'] in ('queued', 'rendering'): time.sleep(3) job = api('/api/demos/'+job['job_id']) if job['status'] != 'succeeded': raise RuntimeError(job.get('error', job['status'])) print(json.dumps(job, indent=2))