diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2019-04-27 20:30:25 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2019-04-27 20:30:25 +0200 |
| commit | 60e19825c2e8aef910b701bf2ca060d7fcbac78a (patch) | |
| tree | ea27ed4882c3a7b9ce5bd435d04bc26c1877f626 /check/app/server/api.py | |
| parent | c59a52dacd1259fadb545c852883412e61f74c84 (diff) | |
multiple search results loading
Diffstat (limited to 'check/app/server/api.py')
| -rw-r--r-- | check/app/server/api.py | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/check/app/server/api.py b/check/app/server/api.py index 66a0dd1..1a935cc 100644 --- a/check/app/server/api.py +++ b/check/app/server/api.py @@ -35,49 +35,41 @@ def get_params(default_threshold=MATCH_THRESHOLD, default_limit=MATCH_LIMIT): threshold = int(request.form.get('threshold') or default_threshold) limit = int(request.form.get('limit') or default_limit) except: - return jsonify({ - 'success': False, - 'match': False, - 'error': 'param_error' - }) - + return None, 'param_error' + + # Process uploaded file if 'q' in request.files: file = request.files['q'] fn = file.filename - if fn.endswith('blob'): # FIX PNG IMAGES? + # demo client currently uploads a jpeg called 'blob' + if fn.endswith('blob'): logging.debug('received a blob, assuming JPEG') fn = 'filename.jpg' basename, ext = os.path.splitext(fn) if ext.lower() not in valid_exts: - return jsonify({ - 'success': False, - 'match': False, - 'error': 'not_an_image' - }) + return None, 'not_an_image' + ext = ext[1:].lower() raw = None im = Image.open(file.stream).convert('RGB') + url = None + + # Fetch remote URL else: url = request.form.get('url') if not url: - return jsonify({ - 'success': False, - 'match': False, - 'error': 'no_image' - }) + return None, 'no_image' basename, ext = os.path.splitext(url) if ext.lower() not in valid_exts: - return jsonify({ - 'success': False, - 'match': False, - 'error': 'not_an_image' - }) + return None, 'not_an_image' + ext = ext[1:].lower() remote_request = urllib.request.Request(url) remote_response = urllib.request.urlopen(remote_request) raw = remote_response.read() im = Image.open(io.BytesIO(raw)).convert('RGB') + return (threshold, limit, url, ext, raw, im,), None @api.route('/v1/match', methods=['POST']) def match(): @@ -86,10 +78,17 @@ def match(): """ start = time.time() - threshold, limit, raw, im = get_params() + params, error = get_params() + if error: + return jsonify({ + 'success': False, + 'match': False, + 'error': error, + }) + + threshold, limit, url, ext, raw, im = params phash = compute_phash_int(im) - ext = ext[1:].lower() results = search_by_phash(phash=phash, threshold=threshold, limit=limit) @@ -118,7 +117,15 @@ def similar(): """ start = time.time() - threshold, limit, raw, im = get_params(default_threshold=SIMILARITY_THRESHOLD, default_limit=SIMILARITY_LIMIT) + params, error = get_params(default_threshold=SIMILARITY_THRESHOLD, default_limit=SIMILARITY_LIMIT) + if error: + return jsonify({ + 'success': False, + 'match': False, + 'error': error, + }) + + threshold, limit, url, ext, raw, im = params phash = compute_phash_int(im) ext = ext[1:].lower() |
