52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
from pymongo.errors import DuplicateKeyError
|
|
|
|
from shared.datastore import connect_minio
|
|
from shared.mongodb import connect_mongodb
|
|
from shared.mongodb.classes import VisualCommunication
|
|
from shared.utils import check_env, setup_logging
|
|
from web_ui.src.main import NECESSARY_ENV_VAR_LIST
|
|
|
|
if __name__ == '__main__':
|
|
# load in env file
|
|
env_path = Path(__file__).parent.parent / 'server.env'
|
|
assert env_path.exists()
|
|
load_dotenv(env_path)
|
|
# ensure env vars set
|
|
check_env(NECESSARY_ENV_VAR_LIST)
|
|
# setup logging
|
|
setup_logging()
|
|
# connect to minIO
|
|
minio_client = connect_minio()
|
|
# connect to MongoDB
|
|
collection, db, client = connect_mongodb()
|
|
# get list of image paths
|
|
ext_img_dir = Path('/Volumes/BW-PSSD/Mixed Methods/')
|
|
assert ext_img_dir.exists()
|
|
img_path_list = [
|
|
path
|
|
for path in ext_img_dir.glob(
|
|
'*.jpg',
|
|
)
|
|
if path.is_file()
|
|
]
|
|
print(f"found {len(img_path_list)} images")
|
|
# create visual communication objects
|
|
vis_com_list = [
|
|
VisualCommunication.from_file(path, minio_client=minio_client)
|
|
for path in img_path_list
|
|
]
|
|
print(f"created {len(vis_com_list)} visual communication objects")
|
|
# upload images
|
|
for vis_com in vis_com_list:
|
|
try:
|
|
result = collection.insert_one(vis_com.model_dump())
|
|
except DuplicateKeyError as exc:
|
|
print('ignoring:\n', exc)
|
|
else:
|
|
print(f"inserted document: {result}")
|