import os from os.path import join import logging from app.utils.logger_utils import Logger from app.settings import app_cfg as cfg from app.settings import types # ------------------------------------------------------------------------- # Metadata and media files # ------------------------------------------------------------------------- class DataStore: # local data store log = Logger.getLogger() def __init__(self, opt_data_store, opt_dataset): self.data_store = join(f'/data_store_{opt_data_store.name.lower()}') self._dir_dataset = join(self.data_store, 'datasets', cfg.DIR_PEOPLE, opt_dataset.name.lower()) self._dir_media = join(self._dir_dataset, 'media') self._dir_metadata = join(self._dir_dataset, 'metadata') def metadata(self, enum_type): return join(self._dir_metadata, f'{enum_type.name.lower()}.csv') @property def dir_dataset(self): return self._dir_dataset @property def dir_media(self): return self._dir_media @property def dir_media_original(self): return join(self._dir_media, 'original') @property def dir_metadata(self): return self._dir_metadata def metadata_dir(self): self.log.warn('deprecated. use dir_metadata') return self._dir_metadata def media_dir(self): self.log.warn('deprecated. use dir_media') return self._dir_media def media_images_original(self): return join(self._dir_media, 'original') def face(self, subdir, fn, ext): if subdir == '' or subdir is None: subdir = '.' return join(self._dir_media, 'original', subdir, f'{fn}.{ext}') def face_crop(self, subdir, fn, ext): return join(self._dir_media, 'cropped', subdir, f'{fn}.{ext}') def face_uuid(self, uuid, ext): return join(self._dir_media, 'uuid',f'{uuid}.{ext}') def face_crop_uuid(self, uuid, ext): return join(self._dir_media, 'uuid', f'{uuid}.{ext}') def uuid_dir(self): return join(self._dir_media, 'uuid') class DataStoreS3: # S3 server def __init__(self, opt_dataset): self._dir_media = join(cfg.S3_HTTP_MEDIA_URL, opt_dataset.name.lower()) self._dir_metadata = join(cfg.S3_HTTP_METADATA_URL, opt_dataset.name.lower()) def metadata(self, opt_metadata_type, ext='csv'): return join(self._dir_metadata, f'{opt_metadata_type.name.lower()}.{ext}') def face(self, opt_uuid, ext='jpg'): #return join(self._dir_media, 'original', f'{opt_uuid}.{ext}') return join(self._dir_media, f'{opt_uuid}.{ext}') def face_crop(self, opt_uuid, ext='jpg'): # not currently using? return join(self._dir_media, 'cropped', f'{opt_uuid}.{ext}') # ------------------------------------------------------------------------- # Models # -------------------------------------------------------------------------