gh-93 Add tests for dng and nef files

This commit is contained in:
Jaisen Mathai 2016-03-23 00:09:25 -07:00
parent 510d81e142
commit ed127aa402
5 changed files with 131 additions and 4 deletions

2
.gitignore vendored
View File

@ -5,3 +5,5 @@
dist/**
docs/_build
build/**
**/*.nef
**/*.dng

View File

@ -37,7 +37,7 @@ class Media(object):
def __init__(self, source=None):
self.source = source
self.exif_map = {
'date_taken': ['Exif.Photo.DateTimeOriginal', 'Exif.Image.DateTime'], # , 'EXIF FileDateTime'], # noqa
'date_taken': ['Exif.Photo.DateTimeOriginal', 'Exif.Image.DateTime', 'Exif.Photo.DateTimeDigitized'], # , 'EXIF FileDateTime'], # noqa
'latitude': 'Exif.GPSInfo.GPSLatitude',
'latitude_ref': 'Exif.GPSInfo.GPSLatitudeRef',
'longitude': 'Exif.GPSInfo.GPSLongitude',
@ -256,8 +256,6 @@ class Media(object):
def set_album_from_folder(self):
metadata = self.get_metadata()
print 'huh/'
# If this file has an album already set we do not overwrite EXIF
if(metadata['album'] is not None):
return False

View File

@ -153,7 +153,7 @@ class Photo(Media):
# Writing exif with pyexiv2 differs if the key already exists so we
# handle both cases here.
for key in ['Exif.Photo.DateTimeOriginal', 'Exif.Image.DateTime']:
for key in self.exif_map['date_taken']:
if(key in exif_metadata):
exif_metadata[key].value = time
else:

View File

@ -5,6 +5,7 @@ import string
import tempfile
import re
import time
import urllib
from datetime import datetime
from datetime import timedelta
@ -27,7 +28,25 @@ def create_working_folder():
return (temporary_folder, folder)
def download_file(name, destination):
try:
final_name = '{}/{}{}'.format(destination, random_string(10), os.path.splitext(name)[1])
urllib.urlretrieve(
'https://s3.amazonaws.com/jmathai/github/elodie/{}'.format(name),
final_name
)
return final_name
except Exception as e:
return False
def get_file(name):
file_path = get_file_path(name)
if not os.path.isfile(file_path):
return False
return file_path
def get_file_path(name):
current_folder = os.path.dirname(os.path.realpath(__file__))
return os.path.join(current_folder, 'files', name)

View File

@ -235,3 +235,111 @@ def test_set_title_non_ascii():
shutil.rmtree(folder)
assert metadata['title'] == utf8_title, metadata['title']
def test_get_metadata_from_nef():
temporary_folder, folder = helper.create_working_folder()
photo_file = helper.get_file('photo.nef')
origin = '%s/photo.nef' % folder
if not photo_file:
photo_file = helper.download_file('photo.nef', folder)
if not photo_file or not os.path.isfile(photo_file):
raise SkipTest('nef file not downlaoded')
# downloading for each test is costly so we save it in the working directory
file_path_save_as = helper.get_file_path('photo.nef')
if os.path.isfile(photo_file):
shutil.copyfile(photo_file, file_path_save_as)
shutil.copyfile(photo_file, origin)
photo = Photo(origin)
metadata = photo.get_metadata()
shutil.rmtree(folder)
assert metadata['date_taken'] == helper.time_convert((2008, 10, 24, 9, 12, 56, 4, 298, 0)), metadata['date_taken']
def test_set_metadata_on_nef():
temporary_folder, folder = helper.create_working_folder()
photo_file = helper.get_file('photo.nef')
origin = '%s/photo.nef' % folder
if not photo_file:
photo_file = helper.download_file('photo.nef', folder)
if not photo_file or not os.path.isfile(photo_file):
raise SkipTest('nef file not downlaoded')
shutil.copyfile(photo_file, origin)
photo = Photo(origin)
origin_metadata = photo.get_metadata()
status = photo.set_location(11.1111111111, 99.9999999999)
assert status == True, status
photo_new = Photo(origin)
metadata = photo_new.get_metadata()
shutil.rmtree(folder)
assert metadata['date_taken'] == helper.time_convert((2008, 10, 24, 9, 12, 56, 4, 298, 0)), metadata['date_taken']
assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude']
assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']
def test_get_metadata_from_dng():
temporary_folder, folder = helper.create_working_folder()
photo_file = helper.get_file('photo.dng')
origin = '%s/photo.dng' % folder
if not photo_file:
photo_file = helper.download_file('photo.dng', folder)
if not photo_file or not os.path.isfile(photo_file):
raise SkipTest('dng file not downlaoded')
# downloading for each test is costly so we save it in the working directory
file_path_save_as = helper.get_file_path('photo.dng')
if os.path.isfile(photo_file):
shutil.copyfile(photo_file, file_path_save_as)
shutil.copyfile(photo_file, origin)
photo = Photo(origin)
metadata = photo.get_metadata()
shutil.rmtree(folder)
assert metadata['date_taken'] == helper.time_convert((2009, 10, 20, 9, 10, 46, 1, 293, 0)), metadata['date_taken']
def test_set_metadata_on_dng():
temporary_folder, folder = helper.create_working_folder()
photo_file = helper.get_file('photo.dng')
origin = '%s/photo.dng' % folder
if not photo_file:
photo_file = helper.download_file('photo.dng', folder)
if not photo_file or not os.path.isfile(photo_file):
raise SkipTest('dng file not downlaoded')
shutil.copyfile(photo_file, origin)
photo = Photo(origin)
origin_metadata = photo.get_metadata()
status = photo.set_location(11.1111111111, 99.9999999999)
assert status == True, status
photo_new = Photo(origin)
metadata = photo_new.get_metadata()
shutil.rmtree(folder)
assert metadata['date_taken'] == helper.time_convert((2009, 10, 20, 9, 10, 46, 1, 293, 0)), metadata['date_taken']
assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude']
assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']