Uses a Javascript QR scanner

This commit is contained in:
Jorge Enrique Gómez Gómez 2022-08-04 23:54:49 +00:00
parent 6e88c25339
commit 6c9b5169d2
3 changed files with 86 additions and 1 deletions

View File

@ -3,7 +3,7 @@
import uuid import uuid
import sqlite3 import sqlite3
from datetime import datetime from datetime import datetime
from flask import Flask, request, render_template from flask import Flask, request, render_template, current_app
from flask_uuid import FlaskUUID from flask_uuid import FlaskUUID
from flask_qrcode import QRcode from flask_qrcode import QRcode
from flask_socketio import SocketIO, emit from flask_socketio import SocketIO, emit
@ -49,6 +49,10 @@ def show_qr_and_list():
return render_template("template.html") return render_template("template.html")
@app.route('/scan')
def show_qr_reader():
return current_app.send_static_file('scan.html')
@app.route('/<uuid:id>/<hashed>') @app.route('/<uuid:id>/<hashed>')
def catch_uuids(id, hashed): def catch_uuids(id, hashed):
user = request.headers.get('Remote-User') user = request.headers.get('Remote-User')

48
static/instascan.min.js vendored Normal file

File diff suppressed because one or more lines are too long

33
static/scan.html Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<title>Instascan</title>
<!-- script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script -->
<!-- script src="https://rawgit.com/schmich/instascan-builds/master/instascan.min.js"></script -->
<script src="/static/instascan.min.js"></script>
</head>
<body>
<video style="outline:none; width:90%;" id="preview"></video>
<script type="text/javascript">
let options = {
video: document.getElementById('preview'),
mirror: false,
};
let scanner = new Instascan.Scanner(options);
scanner.addListener('scan', function (content) {
window.location.replace(content);
});
Instascan.Camera.getCameras().then(function (cameras) {
if (cameras.length > 1) {
scanner.start(cameras[1]);
} else if (cameras.length > 0) {
scanner.start(cameras[0]);
} else {
console.error('No cameras found.');
}
}).catch(function (e) {
console.error(e);
});
</script>
</body>
</html>