import flynn
import base45
import PyPDF2
+import os
from PIL import Image
from pyzbar import pyzbar
from datetime import datetime
except:
print(f"Usage: {sys.argv[0]} COVID-19-*-*-*.pdf", file=sys.stderr)
print(f"Usage: {sys.argv[0]} QR_CODE.png", file=sys.stderr)
+ print(f"Usage: {sys.argv[0]} 'HC1:.....'", file=sys.stderr)
sys.exit(1)
else:
- infile = sys.argv[1]
+ if os.path.exists(sys.argv[1]):
+ infile = sys.argv[1]
+ else:
+ infile = None
+ qr_data_zlib_b45 = sys.argv[1]
-if open(infile, "rb").read(4) == b"%PDF":
- # extract QR code from PDF using hard-coded index, size and bit depth.
- # This will only work with the official Austrian green pass PDFs.
- pdf=PyPDF2.PdfFileReader(open(infile, "rb"))
- qr_img = pdf.getPage(0)['/Resources']['/XObject']['/Im3']
- qr_pil = Image.frombytes("1", (400,400), qr_img.getData())
-else: # assume image
- qr_pil = Image.open(infile)
+if infile:
+ if open(infile, "rb").read(4) == b"%PDF":
+ # extract QR code from PDF using hard-coded index, size and bit depth.
+ # This will only work with the official Austrian green pass PDFs.
+ pdf=PyPDF2.PdfFileReader(open(infile, "rb"))
+ qr_img = pdf.getPage(0)['/Resources']['/XObject']['/Im3']
+ qr_pil = Image.frombytes("1", (400,400), qr_img.getData())
+ else: # assume image
+ qr_pil = Image.open(infile)
-# decode QR code into raw bytes:
-qr_data_zlib_b45 = pyzbar.decode(qr_pil)[0].data
+ # decode QR code into raw bytes:
+ qr_data_zlib_b45 = pyzbar.decode(qr_pil)[0].data
# strip header ('HC1:') and decompress data:
qr_data_zlib = base45.b45decode(qr_data_zlib_b45[4:])