From a93c7e597686553c9056a2e5d460181b93687b6f Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Wed, 8 Nov 2023 11:36:04 +0530 Subject: [PATCH] image download for card printing --- scripts/image_download.py | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 scripts/image_download.py diff --git a/scripts/image_download.py b/scripts/image_download.py new file mode 100644 index 0000000..bf6d336 --- /dev/null +++ b/scripts/image_download.py @@ -0,0 +1,64 @@ +import os +import time + +import firebase_admin +from firebase_admin import credentials, firestore +import pandas as pd +from urllib.request import urlopen +import datetime + +cred = credentials.Certificate(os.getcwd() + '/' + 'keys/hpos-prod-firebase-adminsdk.json') +firebase_admin.initialize_app(cred) + +db = firestore.client() + +patient_collection = db.collection("patientData") +test_collection = db.collection("testData") + +base_output_folder = os.getcwd() + '/data/image_download' + +start_date = "2023-10-31" +end_date = "2023-11-02" + +start_datetime = datetime.datetime.strptime(start_date, "%Y-%m-%d") +end_datetime = datetime.datetime.strptime(end_date, "%Y-%m-%d") +date_range = [start_datetime + datetime.timedelta(days=x) for x in range((end_datetime - start_datetime).days + 1)] + +for date in date_range: + current_date = date.strftime("%Y-%m-%d") + formatted_date = date.strftime("%d%b%Y") + output_folder = os.path.join(base_output_folder, formatted_date) + os.makedirs(output_folder, exist_ok=True) + + os.makedirs(output_folder, exist_ok=True) + + print(f"Processing data for {current_date}...") + + query = patient_collection.where("createdAt", ">=", current_date).where("createdAt", "<", ( + date + datetime.timedelta(days=1)).strftime("%Y-%m-%d")) + patient_docs = query.stream() + + data = [] + for patient_doc in patient_docs: + patient_data = patient_doc.to_dict() + patient_id = patient_data["_id"] + + user_image_url = patient_data.get("userImageURL", "") + image_filename = f"{patient_id}.jpg" + image_path = os.path.join(output_folder, image_filename) + if os.path.exists(image_path): + continue + test_docs = test_collection.where("_id", "==", patient_id) + + if test_docs.count().get()[0][0].value > 0: + if user_image_url and user_image_url.startswith("http") and not os.path.exists(image_path): + try: + image_data = urlopen(user_image_url).read() + with open(image_path, "wb") as image_file: + image_file.write(image_data) + + except Exception as e: + print(f"An error occurred while downloading image: {str(e)}") + +firebase_admin.delete_app(firebase_admin.get_app()) + \ No newline at end of file