deepface / db.py
athanasopoulou's picture
Add deepface app
1b3fb15
from peewee import BlobField, CharField, IntegrityError, Model, SqliteDatabase
import datetime
import os.path
import pickle
import tempfile
################################################################################
class Gallery(Model):
id = CharField(primary_key=True)
path = CharField(unique=True)
metadata = BlobField()
class Meta:
database = SqliteDatabase(f'{tempfile.gettempdir()}/.db')
Gallery.create_table()
################################################################################
def delete(path):
Gallery.delete().where(Gallery.path == path).execute()
def delete_by_id(id):
Gallery.delete().where(Gallery.id == id).execute()
def exists(path):
return Gallery.select().where(Gallery.path == path).exists()
def exists_by_id(id):
return Gallery.select().where(Gallery.id == id).exists()
def get(path):
image = Gallery.get(Gallery.path == path)
return image.id, pickle.loads(image.metadata)
def get_by_id(id):
image = Gallery.get(Gallery.id == id)
return image.path, pickle.loads(image.metadata)
def tuples():
images = []
for id, path, metadata in Gallery.select().order_by(Gallery.id).tuples():
images.append((id, path, pickle.loads(metadata)))
return images
def update(path, metadata):
metadata = pickle.dumps(metadata)
if os.path.basename(path) == 'webcam.png':
timestamp = datetime.datetime.fromtimestamp(
os.path.getctime(path)).strftime('%Y%m%d_%H%M%S')
id = f'DCIM/Camera/{timestamp}.png'
else:
id = f'DCIM/Upload/{os.path.basename(path)}'
try:
Gallery.create(id=id, path=path, metadata=metadata)
except IntegrityError:
Gallery.set_by_id(id, dict(path=path, metadata=metadata))
return id