From 4c662b3a0e1c0418445434fd7801ce33389f9893 Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Tue, 12 Jan 2021 13:49:05 +1100 Subject: [PATCH] removed debug print of video thumbnail, and made file importer look to see if file is newer than last import, if so, process it and store it in the database. If its older skip it. Then at the end of the function return the database as the list we process --- files.py | 57 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/files.py b/files.py index 0f3c467..36e4804 100644 --- a/files.py +++ b/files.py @@ -14,6 +14,7 @@ import exifread import base64 import numpy import cv2 +import time ################################################################################ # Local Class imports @@ -91,7 +92,6 @@ class FileData(): bt = thumb_buf.tostring() fthumbnail = base64.b64encode(bt) fthumbnail = str(fthumbnail)[2:-1] - print(fthumbnail) return fthumbnail @@ -100,8 +100,10 @@ class FileData(): # multiple valid paths in import_path) # ############################################################################## def GenerateFileData(self): - sets = Settings.query.filter(Settings.name=="import_path").all() - paths= sets[0].value.split("#") + import_path = Settings.query.filter(Settings.name=="import_path").all()[0].value + last_import_date_obj = Settings.query.filter(Settings.name=="last_import_date").all() + last_import_date = float(last_import_date_obj[0].value) + paths= import_path.split("#") for path in paths: path = self.FixPath(path) @@ -115,28 +117,39 @@ class FileData(): self.file_list.append(glob.glob(self.view_path + '**', recursive=True)) for file in self.file_list[0]: - fthumbnail = None if file == path: continue - if os.path.isdir(file): - ftype = 'Directory' - elif self.isImage(file): - ftype = 'Image' - fthumbnail = self.getExif(file) - elif self.isVideo(file): - ftype = 'Video' - fthumbnail = self.generateVideoThumbnail(file) - else: - ftype = 'File' + stat = os.stat(file) + if last_import_date == 0 or stat.st_ctime > last_import_date: + print( "{} - {} is newer than {}".format( file, stat.st_ctime, last_import_date ) ) + fthumbnail = None + if os.path.isdir(file): + ftype = 'Directory' + elif self.isImage(file): + ftype = 'Image' + fthumbnail = self.getExif(file) + elif self.isVideo(file): + ftype = 'Video' + fthumbnail = self.generateVideoThumbnail(file) + else: + ftype = 'File' - if ftype != "Directory": - fhash=self.md5(file) - else: - fhash=None + if ftype != "Directory": + fhash=self.md5(file) + else: + fhash=None - fsize = round(os.stat(file).st_size/(1024*1024)) - fname=file.replace(path, "") - self.view_list.append( Files( name=fname, type=ftype, size_mb=fsize, hash=fhash, thumbnail=fthumbnail )) + fsize = round(os.stat(file).st_size/(1024*1024)) + fname=file.replace(path, "") + file_obj = Files( name=fname, type=ftype, size_mb=fsize, hash=fhash, thumbnail=fthumbnail ) + print( file_obj ) + db.session.add(file_obj) + else: + print( "{} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ) ) + last_import_date_obj[0].value = str(time.time()) + db.session.commit() + file_obj = Files.query.filter().all() + self.view_list = file_obj return self ################################################################################ @@ -150,7 +163,7 @@ class Files(db.Model): size_mb = db.Column(db.Integer, unique=False, nullable=False) # hash might not be unique, this could be the source of dupe problems hash = db.Column(db.Integer, unique=True, nullable=True) - thumbnail = db.Column(db.LargeBinary, unique=False, nullable=True) + thumbnail = db.Column(db.String, unique=False, nullable=True) def __repr__(self): return "".format(self.id, self.name )