diff -r 373392025533 -r 3b1579a7bffb lib/dexif.py --- a/lib/dexif.py Wed Jun 03 18:59:46 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -# -# dexif.py - simple EXIF processing for Degal -# Copyright (C) 2008, Santtu Pajukanta -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the -# Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# - -from subprocess import Popen, PIPE - -# TODO This should be user configurable -EXIFTOOL="/usr/bin/exiftool" - -outputTags = [ -# TODO Create date is in a useless format, needs some strptime love - ("CreateDate", "Create date"), - ("Model", "Camera model"), - ("Aperture", "Aperture"), - ("ExposureMode", "Exposure mode"), - ("ExposureCompensation", "Exposure compensation"), - ("ExposureTime", "Exposure time"), - ("Flash", "Flash mode"), - ("ISO", "ISO"), - ("ShootingMode", "Shooting mode"), - ("LensType", "Lens type"), - ("FocalLength", "Focal length") -] - - -class ExifError(Exception): - pass - -def parse_exif(filepath): - """parse_exif(filepath :: String) -> [(String, String)] - - Parse EXIF tags from an image file and return them in a dict. - """ - - args = [EXIFTOOL, "-s", "-t", filepath] - etproc = Popen(args, stdout = PIPE) - - output, errors = etproc.communicate() - - if etproc.returncode < 0: - raise ExifError, "exiftool terminated by signal %d" % (-etproc.returnco) - elif etproc.returncode > 0: - raise ExifError, "exiftool failed with return code %d" % etproc.returncode - - tags = dict(line.split("\t", 1) for line in output.split("\n") if line) - result = [(descr, tags[key]) for (key, descr) in outputTags if tags.has_key(key)] - return result