gh-93 Add tests for dng and nef files
This commit is contained in:
parent
510d81e142
commit
ed127aa402
|
@ -5,3 +5,5 @@
|
||||||
dist/**
|
dist/**
|
||||||
docs/_build
|
docs/_build
|
||||||
build/**
|
build/**
|
||||||
|
**/*.nef
|
||||||
|
**/*.dng
|
||||||
|
|
|
@ -37,7 +37,7 @@ class Media(object):
|
||||||
def __init__(self, source=None):
|
def __init__(self, source=None):
|
||||||
self.source = source
|
self.source = source
|
||||||
self.exif_map = {
|
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': 'Exif.GPSInfo.GPSLatitude',
|
||||||
'latitude_ref': 'Exif.GPSInfo.GPSLatitudeRef',
|
'latitude_ref': 'Exif.GPSInfo.GPSLatitudeRef',
|
||||||
'longitude': 'Exif.GPSInfo.GPSLongitude',
|
'longitude': 'Exif.GPSInfo.GPSLongitude',
|
||||||
|
@ -256,8 +256,6 @@ class Media(object):
|
||||||
def set_album_from_folder(self):
|
def set_album_from_folder(self):
|
||||||
metadata = self.get_metadata()
|
metadata = self.get_metadata()
|
||||||
|
|
||||||
print 'huh/'
|
|
||||||
|
|
||||||
# If this file has an album already set we do not overwrite EXIF
|
# If this file has an album already set we do not overwrite EXIF
|
||||||
if(metadata['album'] is not None):
|
if(metadata['album'] is not None):
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -153,7 +153,7 @@ class Photo(Media):
|
||||||
|
|
||||||
# Writing exif with pyexiv2 differs if the key already exists so we
|
# Writing exif with pyexiv2 differs if the key already exists so we
|
||||||
# handle both cases here.
|
# 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):
|
if(key in exif_metadata):
|
||||||
exif_metadata[key].value = time
|
exif_metadata[key].value = time
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -5,6 +5,7 @@ import string
|
||||||
import tempfile
|
import tempfile
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
import urllib
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
@ -27,7 +28,25 @@ def create_working_folder():
|
||||||
|
|
||||||
return (temporary_folder, 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):
|
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__))
|
current_folder = os.path.dirname(os.path.realpath(__file__))
|
||||||
return os.path.join(current_folder, 'files', name)
|
return os.path.join(current_folder, 'files', name)
|
||||||
|
|
||||||
|
|
|
@ -235,3 +235,111 @@ def test_set_title_non_ascii():
|
||||||
shutil.rmtree(folder)
|
shutil.rmtree(folder)
|
||||||
|
|
||||||
assert metadata['title'] == utf8_title, metadata['title']
|
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']
|
||||||
|
|
Loading…
Reference in New Issue