42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
from pymongo.errors import DuplicateKeyError
|
|
|
|
from shared.database import connect
|
|
from shared.database.classes import VisualCommunication
|
|
|
|
if __name__ == '__main__':
|
|
# get list of image paths
|
|
test_dir = Path(__file__).parent
|
|
img_dir = test_dir / 'imgs'
|
|
img_path_list = [path for path in img_dir.glob('*.jpeg') if path.is_file()]
|
|
print(img_path_list)
|
|
# instantiate data object
|
|
vis_com_list = [
|
|
VisualCommunication.from_file(path)
|
|
for path
|
|
in img_path_list
|
|
]
|
|
for vis_com in vis_com_list:
|
|
print(repr(vis_com))
|
|
# prepare env vars
|
|
env_path = test_dir.parent / 'local.env'
|
|
assert env_path.exists()
|
|
load_dotenv(env_path)
|
|
os.environ['MONGO_HOST'] = 'localhost'
|
|
# connect to database
|
|
collection, db, client = connect()
|
|
print(client.server_info())
|
|
# 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}")
|