import os from os.path import join import logging from app.settings import app_cfg as cfg from app.settings import types # ------------------------------------------------------------------------- # Metadata and media files # ------------------------------------------------------------------------- class DataStore: # local data store 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') def metadata_dir(self): return join(self.dir_metadata) def media_dir(self): return join(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 # -------------------------------------------------------------------------