Take into account incomplete EXIF data

This commit is contained in:
Joar Wandborg 2013-05-20 00:25:19 +02:00
parent c5323f29f3
commit 907bba318a

View File

@ -28,6 +28,8 @@ real objects.
""" """
import uuid import uuid
import re
import datetime
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
@ -239,23 +241,30 @@ class MediaEntryMixin(GenerateSlugMixin):
def exif_display_data_short(self): def exif_display_data_short(self):
"""Display a very short practical version of exif info""" """Display a very short practical version of exif info"""
import time, datetime
if not self.media_data: if not self.media_data:
return return
exif_all = self.media_data.get("exif_all") exif_all = self.media_data.get("exif_all")
# format date taken
takendate = datetime.datetime.strptime( taken = None
exif_all['Image DateTimeOriginal']['printable'], if 'Image DateTimeOriginal' in exif_all:
'%Y:%m:%d %H:%M:%S').date() # format date taken
taken = takendate.strftime('%B %d %Y') takendate = datetime.datetime.strptime(
fnum = str(exif_all['EXIF FNumber']['printable']).split('/') exif_all['Image DateTimeOriginal']['printable'],
'%Y:%m:%d %H:%M:%S').date()
taken = takendate.strftime('%B %d %Y')
fnum = None
if 'EXIF FNumber' in exif_all:
fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
# calculate aperture # calculate aperture
aperture = None
if len(fnum) == 2: if len(fnum) == 2:
aperture = "f/%.1f" % (float(fnum[0])/float(fnum[1])) aperture = "f/%.1f" % (float(fnum[0])/float(fnum[1]))
elif fnum[0] != 'None': elif fnum[0] != 'None':
aperture = "f/%s" % (fnum[0]) aperture = "f/%s" % (fnum[0])
else:
aperture = None
return { return {
"Camera" : exif_all['Image Model']['printable'], "Camera" : exif_all['Image Model']['printable'],
"Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'], "Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'],