Cleaned up EXIF view
The last update made the assumption that EXIF metadata is in some way consistent between camera models, images, manufacturers. This update takes into account that nothing is certain whenever EXIF is involved.
This commit is contained in:
parent
24ede04415
commit
14aa2eaa19
@ -246,7 +246,8 @@ class MediaEntryMixin(GenerateSlugMixin):
|
|||||||
|
|
||||||
exif_all = self.media_data.get("exif_all")
|
exif_all = self.media_data.get("exif_all")
|
||||||
|
|
||||||
taken = None
|
exif_short = {}
|
||||||
|
|
||||||
if 'Image DateTimeOriginal' in exif_all:
|
if 'Image DateTimeOriginal' in exif_all:
|
||||||
# format date taken
|
# format date taken
|
||||||
takendate = datetime.datetime.strptime(
|
takendate = datetime.datetime.strptime(
|
||||||
@ -254,6 +255,8 @@ class MediaEntryMixin(GenerateSlugMixin):
|
|||||||
'%Y:%m:%d %H:%M:%S').date()
|
'%Y:%m:%d %H:%M:%S').date()
|
||||||
taken = takendate.strftime('%B %d %Y')
|
taken = takendate.strftime('%B %d %Y')
|
||||||
|
|
||||||
|
exif_short.update({'Date Taken': taken})
|
||||||
|
|
||||||
aperture = None
|
aperture = None
|
||||||
if 'EXIF FNumber' in exif_all:
|
if 'EXIF FNumber' in exif_all:
|
||||||
fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
|
fnum = str(exif_all['EXIF FNumber']['printable']).split('/')
|
||||||
@ -264,14 +267,25 @@ class MediaEntryMixin(GenerateSlugMixin):
|
|||||||
elif fnum[0] != 'None':
|
elif fnum[0] != 'None':
|
||||||
aperture = "f/%s" % (fnum[0])
|
aperture = "f/%s" % (fnum[0])
|
||||||
|
|
||||||
return {
|
if aperture:
|
||||||
"Camera" : exif_all['Image Model']['printable'],
|
exif_short.update({'Aperture': aperture})
|
||||||
"Exposure" : '%s sec' % exif_all['EXIF ExposureTime']['printable'],
|
|
||||||
"Aperture" : aperture,
|
short_keys = [
|
||||||
"ISO" : exif_all['EXIF ISOSpeedRatings']['printable'],
|
('Camera', 'Image Model', None),
|
||||||
"Focal Length" : '%s mm' % exif_all['EXIF FocalLength']['printable'],
|
('Exposure', 'EXIF ExposureTime', lambda x: '%s sec' % x),
|
||||||
"Date Taken" : taken,
|
('ISO Speed', 'EXIF ISOSpeedRatings', None),
|
||||||
}
|
('Focal Length', 'EXIF FocalLength', lambda x: '%s mm' % x)]
|
||||||
|
|
||||||
|
for label, key, fmt_func in short_keys:
|
||||||
|
try:
|
||||||
|
val = fmt_func(exif_all[key]['printable']) if fmt_func \
|
||||||
|
else exif_all[key]['printable']
|
||||||
|
exif_short.update({label: val})
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return exif_short
|
||||||
|
|
||||||
|
|
||||||
class MediaCommentMixin(object):
|
class MediaCommentMixin(object):
|
||||||
@property
|
@property
|
||||||
|
@ -717,3 +717,29 @@ pre {
|
|||||||
width: 46%;
|
width: 46%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Exif display */
|
||||||
|
#exif_content h3 {
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
}
|
||||||
|
#exif_camera_information {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#exif_additional_info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#exif_additional_info table {
|
||||||
|
font-size: 11px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
#exif_additional_info td {
|
||||||
|
vertical-align: top;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
}
|
||||||
|
#exif_content .col1 {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
#exif_additional_info table tr {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
@ -17,32 +17,6 @@
|
|||||||
#}
|
#}
|
||||||
|
|
||||||
{% block exif_content %}
|
{% block exif_content %}
|
||||||
<style type="text/css">
|
|
||||||
#exif_content h3 {
|
|
||||||
border-bottom: 1px solid #333;
|
|
||||||
}
|
|
||||||
#exif_camera_information {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#exif_additional_info {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
#exif_additional_info table {
|
|
||||||
font-size: 11px;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
#exif_additional_info td {
|
|
||||||
vertical-align: top;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
#exif_content .col1 {
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
#exif_additional_info table tr {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<noscript>
|
<noscript>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#exif_additional_info {
|
#exif_additional_info {
|
||||||
@ -58,30 +32,12 @@
|
|||||||
<h3>Camera Information</h3>
|
<h3>Camera Information</h3>
|
||||||
<table id="exif_camera_information">
|
<table id="exif_camera_information">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{% for label, value in media.exif_display_data_short().iteritems() %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="col1">Taken on</td>
|
<td class="col1">{{ label }}</td>
|
||||||
<td>{{ media.exif_display_data_short()['Date Taken'] }}</td>
|
<td>{{ value }}</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="col1">Camera</td>
|
|
||||||
<td>{{ media.exif_display_data_short()['Camera'] }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="col1">Exposure</td>
|
|
||||||
<td>{{ media.exif_display_data_short()['Exposure'] }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="col1">Aperture</td>
|
|
||||||
<td>{{ media.exif_display_data_short()['Aperture'] }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="col1">ISO</td>
|
|
||||||
<td>{{ media.exif_display_data_short()['ISO'] }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="col1">Focal Length</td>
|
|
||||||
<td>{{ media.exif_display_data_short()['Focal Length'] }}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 id="exif_additional_info_button" class="button_action">
|
<h3 id="exif_additional_info_button" class="button_action">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user