Merge branch 'master' of https://git.tannercollin.com/tanner/3Dshock
commit
91e26fe9fc
4 changed files with 123 additions and 10 deletions
@ -1,12 +1,123 @@ |
||||
from flask import Flask |
||||
import os |
||||
import json |
||||
import time |
||||
from pathlib import Path |
||||
from flask import Flask, request, abort, send_from_directory |
||||
from flask_cors import CORS |
||||
|
||||
build_folder = '../client/build' |
||||
app = Flask(__name__, static_folder=build_folder, static_url_path='') |
||||
import power, capture, download |
||||
|
||||
build_folder = Path('../client/build') |
||||
output_folder = Path('./output') |
||||
app = Flask(__name__, static_folder=str(build_folder), static_url_path='') |
||||
CORS(app) |
||||
|
||||
@app.route('/api/clients', methods=['POST']) |
||||
def clients_post(): |
||||
content = request.json |
||||
print('Recieved:', content) |
||||
|
||||
phone = str(content['phone']) |
||||
|
||||
for i in range(1, 100): |
||||
suffix = str(i).zfill(3) |
||||
folder = phone + '_' + suffix |
||||
path = output_folder / folder |
||||
if not path.exists(): |
||||
break |
||||
|
||||
path.mkdir() |
||||
info_file = path / 'info.json' |
||||
info_file.touch() |
||||
info_file.write_text(json.dumps(content, indent=4)) |
||||
|
||||
client_id = folder |
||||
|
||||
return {'client_id': client_id} |
||||
|
||||
@app.route('/api/clients/<cid>', methods=['GET']) |
||||
def clients_get(cid): |
||||
folder = cid |
||||
path = output_folder / cid |
||||
|
||||
if not path.exists(): |
||||
abort(404) |
||||
|
||||
info_file = path / 'info.json' |
||||
info_text = info_file.read_text() |
||||
res = json.loads(info_text) |
||||
photo_glob = path.glob('*.jpg') |
||||
res['has_photos'] = bool(list(photo_glob)) |
||||
|
||||
return res |
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['GET']) |
||||
def session_get(cid): |
||||
folder = cid |
||||
path = output_folder / cid |
||||
|
||||
if not path.exists(): |
||||
abort(404) |
||||
|
||||
photo_glob = path.glob('*.jpg') |
||||
res = {} |
||||
res['photos'] = [x.name for x in photo_glob] |
||||
|
||||
return res |
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['DELETE']) |
||||
def session_delete(cid): |
||||
folder = cid |
||||
path = output_folder / cid |
||||
|
||||
if not path.exists(): |
||||
abort(404) |
||||
|
||||
photo_glob = path.glob('*.jpg') |
||||
|
||||
for p in photo_glob: |
||||
p.unlink() |
||||
|
||||
return '' |
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['POST']) |
||||
def session_post(cid): |
||||
folder = cid |
||||
path = output_folder / cid |
||||
|
||||
if not path.exists(): |
||||
abort(404) |
||||
|
||||
# go through the photo taking process |
||||
|
||||
# warmup |
||||
power.lights_on() |
||||
time.sleep(4) |
||||
power.lights_off() |
||||
time.sleep(0.5) |
||||
|
||||
# capture |
||||
power.lights_on() |
||||
time.sleep(0.25) |
||||
capture.trigger_capture() |
||||
time.sleep(1) |
||||
power.grid_on() |
||||
time.sleep(0.25) |
||||
capture.trigger_capture() |
||||
time.sleep(1) |
||||
power.grid_off() |
||||
power.lights_off() |
||||
|
||||
download.download_all_photos(path) |
||||
|
||||
return '' |
||||
|
||||
@app.route('/') |
||||
def index(): |
||||
return app.send_static_file('index.html') |
||||
|
||||
app.run() |
||||
@app.route('/output/<path:filename>') |
||||
def output(filename): |
||||
return send_from_directory('output/', filename) |
||||
|
||||
app.run(host='0.0.0.0') |
||||
|
Loading…
Reference in new issue