Browse Source

Fix encoding issue with EXIF datetime

pull/40/head
Simon Conseil 13 years ago
parent
commit
4eb67c9162
  1. 4
      sigal/__init__.py
  2. 9
      sigal/image.py
  3. 2
      sigal/themes/colorbox/templates/index.html
  4. 2
      sigal/themes/galleria/templates/index.html

4
sigal/__init__.py

@ -41,7 +41,6 @@ from argh import ArghParser, arg
from logging import Formatter
from .gallery import Gallery
from .pkgmeta import __version__
from .settings import read_settings
_DEFAULT_CONFIG_FILE = 'sigal.conf.py'
@ -151,7 +150,6 @@ def serve(path):
def main():
parser = ArghParser(description='Simple static gallery generator.',
version=__version__)
parser = ArghParser(description='Simple static gallery generator.')
parser.add_commands([init, build, serve])
parser.dispatch()

9
sigal/image.py

@ -40,6 +40,8 @@ from pilkit.processors import Transpose, Adjust
from pilkit.utils import save_image
from datetime import datetime
from . import compat
def _has_exif_tags(img):
return hasattr(img, 'info') and 'exif' in img.info
@ -183,7 +185,12 @@ def get_exif_tags(source):
# Remove null bytes at the end if necessary
date = data['DateTimeOriginal'].rsplit('\x00')[0]
dt = datetime.strptime(date, '%Y:%m:%d %H:%M:%S')
simple['datetime'] = dt
dt = dt.strftime('%A, %d. %B %Y')
if compat.PY2:
simple['datetime'] = dt.decode('utf8')
else:
simple['datetime'] = dt
except (ValueError, TypeError) as e:
msg = u'Could not parse DateTimeOriginal of %s: %s' % (source, e)
logger.warning(msg)

2
sigal/themes/colorbox/templates/index.html

@ -78,7 +78,7 @@
{% if media.big %} data-big="{{ media.big }}"{% endif %}
{% if media.exif %}
{% if media.exif.datetime %}
data-date=", {{ media.exif.datetime.strftime('%d %B %Y') }}"
data-date=", {{ media.exif.datetime }}"
{% endif %}
{% endif %}
{%- endmacro %}

2
sigal/themes/galleria/templates/index.html

@ -67,7 +67,7 @@
{% if media.exif.exposure %}Exposure: {{ media.exif.exposure }}, {% endif %}
{% if media.exif.fstop %}Fstop: {{ media.exif.fstop }}{% endif %}
{% if media.exif.datetime %}
<br>Date: {{ media.exif.datetime.strftime('%A, %d. %B %Y') }}
<br>Date: {{ media.exif.datetime }}
{% endif %}
{% endif %}
{%- endmacro %}

Loading…
Cancel
Save