diff --git a/elodie/constants.py b/elodie/constants.py index 99c4a1b..0979381 100644 --- a/elodie/constants.py +++ b/elodie/constants.py @@ -21,3 +21,6 @@ script_directory = path.dirname(path.dirname(path.abspath(__file__))) #: Path to Elodie's ExifTool config file. exiftool_config = path.join(script_directory,'configs','ExifTool_config') + +#: Accepted language in responses from MapQuest +accepted_language = 'en' diff --git a/elodie/geolocation.py b/elodie/geolocation.py index 90da3e4..e9ea6a0 100644 --- a/elodie/geolocation.py +++ b/elodie/geolocation.py @@ -161,7 +161,7 @@ def reverse_lookup(lat, lon): try: params = {'format': 'json', 'key': key, 'lat': lat, 'lon': lon} - headers = {"Accept-Language": "en-US,en;q=0.5"} + headers = {"Accept-Language": constants.accepted_language} r = requests.get( 'http://open.mapquestapi.com/nominatim/v1/reverse.php?%s' % urllib.urlencode(params),headers=headers diff --git a/elodie/tests/filesystem_test.py b/elodie/tests/filesystem_test.py index 875b7b4..2c67112 100644 --- a/elodie/tests/filesystem_test.py +++ b/elodie/tests/filesystem_test.py @@ -19,18 +19,6 @@ from nose.plugins.skip import SkipTest os.environ['TZ'] = 'GMT' -if os.name == 'nt': - tz_shift = (datetime.fromtimestamp(0) - - datetime.utcfromtimestamp(0)).seconds/3600 -else: - tz_shift = 0 - -def path_tz_fix(s_path): - #some_prefix2015-12-05_00-59-26-with-title-some-title.jpg - m = re.search('(\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2})',s_path) - t_date = datetime.fromtimestamp(time.mktime(time.strptime(m.group(0), '%Y-%m-%d_%H-%M-%S'))) - s_date_fix = (t_date-timedelta(hours=tz_shift)).strftime('%Y-%m-%d_%H-%M-%S') - return re.sub('\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}',s_date_fix,s_path) def test_create_directory_success(): filesystem = FileSystem() @@ -144,14 +132,14 @@ def test_get_file_name_plain(): media = Photo(helper.get_file('plain.jpg')) file_name = filesystem.get_file_name(media) - assert file_name == path_tz_fix('2015-12-05_00-59-26-plain.jpg'), file_name + assert file_name == helper.path_tz_fix('2015-12-05_00-59-26-plain.jpg'), file_name def test_get_file_name_with_title(): filesystem = FileSystem() media = Photo(helper.get_file('with-title.jpg')) file_name = filesystem.get_file_name(media) - assert file_name == path_tz_fix('2015-12-05_00-59-26-with-title-some-title.jpg'), file_name + assert file_name == helper.path_tz_fix('2015-12-05_00-59-26-with-title-some-title.jpg'), file_name def test_get_folder_name_by_date(): filesystem = FileSystem() @@ -211,7 +199,7 @@ def test_process_file_plain(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Unknown Location','2015-12-05_00-59-26-photo.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Unknown Location','2015-12-05_00-59-26-photo.jpg')) in destination, destination def test_process_file_with_title(): filesystem = FileSystem() @@ -231,7 +219,7 @@ def test_process_file_with_title(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Unknown Location','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Unknown Location','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination def test_process_file_with_location(): filesystem = FileSystem() @@ -251,7 +239,7 @@ def test_process_file_with_location(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Sunnyvale','2015-12-05_00-59-26-photo.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Sunnyvale','2015-12-05_00-59-26-photo.jpg')) in destination, destination def test_process_file_with_location_and_title(): filesystem = FileSystem() @@ -271,7 +259,7 @@ def test_process_file_with_location_and_title(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Sunnyvale','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Sunnyvale','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination def test_process_file_with_album(): filesystem = FileSystem() @@ -291,7 +279,7 @@ def test_process_file_with_album(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo.jpg')) in destination, destination def test_process_file_with_album_and_title(): filesystem = FileSystem() @@ -311,7 +299,7 @@ def test_process_file_with_album_and_title(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination def test_process_file_with_album_and_title_and_location(): filesystem = FileSystem() @@ -331,4 +319,4 @@ def test_process_file_with_album_and_title_and_location(): assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum - assert path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination + assert helper.path_tz_fix(os.path.join('2015-12-Dec','Test Album','2015-12-05_00-59-26-photo-some-title.jpg')) in destination, destination diff --git a/elodie/tests/helper.py b/elodie/tests/helper.py index 574241e..9959165 100644 --- a/elodie/tests/helper.py +++ b/elodie/tests/helper.py @@ -3,6 +3,11 @@ import os import random import string import tempfile +import re +import time + +from datetime import datetime +from datetime import timedelta def checksum(file_path, blocksize=65536): hasher = hashlib.sha256() @@ -53,3 +58,37 @@ def random_coordinate(coordinate, precision): def temp_dir(): return tempfile.gettempdir() + +def is_windows(): + return os.name == 'nt' + +# path_tz_fix(file_name) +# Change timestamp in file_name by the offset +# between UTC and local time, i.e. +# 2015-12-05_00-59-26-with-title-some-title.jpg -> +# 2015-12-04_20-59-26-with-title-some-title.jpg +# (Windows only) + +def path_tz_fix(file_name): + if is_windows(): + # Calculate the offset between UTC and local time + tz_shift = (datetime.fromtimestamp(0) - + datetime.utcfromtimestamp(0)).seconds/3600 + # replace timestamp in file_name + m = re.search('(\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2})',file_name) + t_date = datetime.fromtimestamp(time.mktime(time.strptime(m.group(0), '%Y-%m-%d_%H-%M-%S'))) + s_date_fix = (t_date-timedelta(hours=tz_shift)).strftime('%Y-%m-%d_%H-%M-%S') + return re.sub('\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}',s_date_fix,file_name) + else: + return file_name + +# time_convert(s_time) +# Change s_time (struct_time) by the offset +# between UTC and local time +# (Windows only) + +def time_convert(s_time): + if is_windows(): + return time.gmtime((time.mktime(s_time))) + else: + return s_time diff --git a/elodie/tests/media/photo_test.py b/elodie/tests/media/photo_test.py index eeb2e11..9ae5938 100644 --- a/elodie/tests/media/photo_test.py +++ b/elodie/tests/media/photo_test.py @@ -4,7 +4,6 @@ import os import sys from datetime import datetime -from datetime import timedelta import shutil import tempfile import time @@ -19,14 +18,6 @@ from elodie.media.media import Media from elodie.media.photo import Photo os.environ['TZ'] = 'GMT' -if os.name == 'nt': - tz_shift = (datetime.fromtimestamp(0) - - datetime.utcfromtimestamp(0)).seconds/3600 -else: - tz_shift = 0 - -def time_convert(s_time): - return datetime.fromtimestamp(time.mktime(s_time)) def test_photo_extensions(): photo = Photo() @@ -105,7 +96,7 @@ def test_get_date_taken(): date_taken = photo.get_date_taken() # assert date_taken == (2015, 12, 5, 0, 59, 26, 5, 339, 0), date_taken - assert time_convert(date_taken) == time_convert((2015, 12, 5, 0, 59, 26, 5, 339, 0)) - timedelta(hours = tz_shift), date_taken + assert date_taken == helper.time_convert((2015, 12, 5, 0, 59, 26, 5, 339, 0)), date_taken def test_get_date_taken_without_exif(): source = helper.get_file('no-exif.jpg') @@ -147,7 +138,7 @@ def test_set_date_taken_with_missing_datetimeoriginal(): shutil.rmtree(folder) #assert date_taken == (2013, 9, 30, 7, 6, 5, 0, 273, 0), metadata['date_taken'] - assert time_convert(date_taken) == time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)) - timedelta(hours = tz_shift), metadata['date_taken'] + assert date_taken == helper.time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)), metadata['date_taken'] def test_set_date_taken(): temporary_folder, folder = helper.create_working_folder() @@ -168,7 +159,7 @@ def test_set_date_taken(): shutil.rmtree(folder) #assert date_taken == (2013, 9, 30, 7, 6, 5, 0, 273, 0), metadata['date_taken'] - assert time_convert(date_taken) == time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)) - timedelta(hours = tz_shift), metadata['date_taken'] + assert date_taken == helper.time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)), metadata['date_taken'] def test_set_location(): raise SkipTest('gh-31, precision is lost in conversion from decimal to dms')