exif for dates added
This commit is contained in:
@@ -34,7 +34,7 @@ import glob
|
||||
from PIL import Image, ImageOps
|
||||
from pymediainfo import MediaInfo
|
||||
import hashlib
|
||||
#import exifread
|
||||
import exifread
|
||||
import base64
|
||||
import numpy
|
||||
import cv2
|
||||
@@ -44,6 +44,7 @@ import io
|
||||
import face_recognition
|
||||
import re
|
||||
|
||||
|
||||
DEBUG=1
|
||||
|
||||
# an Manager, which the Session will use for connection resources
|
||||
@@ -473,6 +474,39 @@ def HandleAnyFSDeletions(job):
|
||||
rm_cnt+=1
|
||||
return rm_cnt
|
||||
|
||||
def GetDateFromFile(file, stat):
|
||||
# try exif
|
||||
try:
|
||||
print(f"trying exif read of {file}")
|
||||
f = open(file, 'rb')
|
||||
tags = exifread.process_file(f)
|
||||
date_str, time_str = str(tags["EXIF DateTimeOriginal"]).split(" ")
|
||||
print(date_str)
|
||||
year, month, day = date_str.split(":")
|
||||
year=int(year)
|
||||
month=int(month)
|
||||
day=int(day)
|
||||
print(year)
|
||||
check = datetime( year, month, day )
|
||||
print( f"check={check}" )
|
||||
except:
|
||||
# try parsing filename
|
||||
try:
|
||||
m=re.search( '(\d{4})(\d{2})(\d{2})', file)
|
||||
year=int(m[1])
|
||||
month=int(m[2])
|
||||
day=int(m[3])
|
||||
check2 = datetime( year, month, day )
|
||||
print( f"check2={check2}" )
|
||||
# give up and use file sys date
|
||||
except:
|
||||
year, month, day, _, _, _, _, _, _ = datetime.fromtimestamp(stat.st_ctime).timetuple()
|
||||
c=date(year, month, day).isocalendar()
|
||||
woy=c[1]
|
||||
print(f"DEL ME: year={year}, month={month}, day={day}")
|
||||
return year, month, day, woy
|
||||
|
||||
|
||||
def JobImportDir(job):
|
||||
JobProgressState( job, "In Progress" )
|
||||
settings = session.query(Settings).first()
|
||||
@@ -521,17 +555,8 @@ def JobImportDir(job):
|
||||
else:
|
||||
type_str = 'Unknown'
|
||||
fsize = round(stat.st_size/(1024*1024))
|
||||
m=re.search( '(\d{4})(\d{2})(\d{2})', fname)
|
||||
if m:
|
||||
year=int(m[1])
|
||||
month=int(m[2])
|
||||
day=int(m[3])
|
||||
else:
|
||||
year, month, day, _, _, _, _, _, _ = datetime.fromtimestamp(stat.st_ctime).timetuple()
|
||||
print(f"year={year}, month={month}, day={day}")
|
||||
c=date(year, month, day).isocalendar()
|
||||
woy=c[1]
|
||||
|
||||
year, month, day, woy = GetDateFromFile(fname, stat)
|
||||
e=AddFile( job, basename, type_str, fsize, dir, year, month, day, woy )
|
||||
else:
|
||||
e=session.query(Entry).filter(Entry.name==basename).first()
|
||||
|
||||
Reference in New Issue
Block a user