Created a match representation, figured how to access specific data from Match class.
This commit is contained in:
parent
952f2726ba
commit
d935cc1ea0
27
functions.py
27
functions.py
|
@ -39,7 +39,7 @@ class Radiation:
|
||||||
|
|
||||||
def _radiation_conversion(self, radiation, si_factor):
|
def _radiation_conversion(self, radiation, si_factor):
|
||||||
# Convert CP/M to µS/h using si_factor
|
# Convert CP/M to µS/h using si_factor
|
||||||
radiation = round(float(radiation) * si_factor, 2)
|
radiation = float(radiation) * si_factor
|
||||||
return radiation
|
return radiation
|
||||||
|
|
||||||
class Photo:
|
class Photo:
|
||||||
|
@ -110,7 +110,13 @@ class Match:
|
||||||
self.position = self._find_position_match(photo_time, position_list)
|
self.position = self._find_position_match(photo_time, position_list)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
pass
|
if self.radiation[1]:
|
||||||
|
radiation = round(self.radiation[1], 2)
|
||||||
|
else:
|
||||||
|
radiation = None
|
||||||
|
return 'Radiation: %s µS/h (Δt %s) \nPosition: Lat: %s, Long: %s, Alt: %sm (Δt %s)' % \
|
||||||
|
(str(radiation), str(self.radiation[0]), str(self.position[1][1]), \
|
||||||
|
str(self.position[1][2]), str(self.position[1][3]), str(self.position[0]))
|
||||||
|
|
||||||
def _find_radiation_match(self, photo_time, list):
|
def _find_radiation_match(self, photo_time, list):
|
||||||
valuelist = []
|
valuelist = []
|
||||||
|
@ -126,27 +132,28 @@ class Match:
|
||||||
# Return the list item with the lowest timedelta in column 0.
|
# Return the list item with the lowest timedelta in column 0.
|
||||||
# Column 2 contains the source objects untouched.
|
# Column 2 contains the source objects untouched.
|
||||||
if valuelist:
|
if valuelist:
|
||||||
print(min(valuelist, key=lambda x: x[0]))
|
result = min(valuelist, key=lambda x: x[0])
|
||||||
return min(valuelist, key=lambda x: x[0])
|
return result[0], result[1].radiation
|
||||||
return None
|
# Return a tuple of 2x None, if there was no match.
|
||||||
|
return None, None
|
||||||
|
|
||||||
def _find_position_match(self, photo_time, list):
|
def _find_position_match(self, photo_time, list):
|
||||||
valuelist = []
|
valuelist = []
|
||||||
for row in list:
|
for row in list:
|
||||||
# Define timedelta and define timedelta datetime object.
|
# Define timedelta and define timedelta datetime object.
|
||||||
delta = timedelta(seconds=60)
|
delta = timedelta(seconds=300)
|
||||||
if row[0]:
|
if row[0]:
|
||||||
time_delta = abs(row[0] - photo_time)
|
time_delta = abs(row[0] - photo_time)
|
||||||
# datetime objects should match with 1 minute precision.
|
# datetime objects should match with 5 minute precision.
|
||||||
if time_delta < delta:
|
if time_delta < delta:
|
||||||
element = (time_delta, row)
|
element = (time_delta, row)
|
||||||
valuelist.append(element)
|
valuelist.append(element)
|
||||||
# Return the list item with the lowest timedelta in column 0.
|
# Return the list item with the lowest timedelta in column 0.
|
||||||
# Column 2 contains the source objects untouched.
|
# Column 2 contains the source objects untouched.
|
||||||
if valuelist:
|
if valuelist:
|
||||||
print(min(valuelist, key=lambda x: x[0]))
|
#print(min(valuelist, key=lambda x: x[0]))
|
||||||
return min(valuelist, key=lambda x: x[0])
|
return min(valuelist, key=lambda x: x[0])
|
||||||
return None
|
return [None, [None, None, None, None]]
|
||||||
|
|
||||||
class Exif:
|
class Exif:
|
||||||
'''
|
'''
|
||||||
|
@ -221,7 +228,7 @@ class Exif:
|
||||||
|
|
||||||
if radiation:
|
if radiation:
|
||||||
# Set new UserComment
|
# Set new UserComment
|
||||||
new_comment = 'Radiation ☢ : ' + str(radiation) + ' µS/h'
|
new_comment = 'Radiation ☢ : %s µS/h' % str(round(radiation, 2))
|
||||||
metadata['Exif.Photo.UserComment'] = new_comment
|
metadata['Exif.Photo.UserComment'] = new_comment
|
||||||
else:
|
else:
|
||||||
new_comment = None
|
new_comment = None
|
||||||
|
|
16
rad_tag.py
16
rad_tag.py
|
@ -74,7 +74,7 @@ if args.gpx is not None:
|
||||||
point_aware_time = point.time.astimezone(local_timezone)
|
point_aware_time = point.time.astimezone(local_timezone)
|
||||||
#point_aware_time = point_naive_time.astimezone(local_timezone)
|
#point_aware_time = point_naive_time.astimezone(local_timezone)
|
||||||
position = (point_aware_time, point.latitude, point.longitude,
|
position = (point_aware_time, point.latitude, point.longitude,
|
||||||
point.elevation, local_timezone)
|
point.elevation)
|
||||||
position_list.append(position)
|
position_list.append(position)
|
||||||
|
|
||||||
# Inform the user about what is going to happen
|
# Inform the user about what is going to happen
|
||||||
|
@ -93,16 +93,8 @@ for src_photo in args.photos:
|
||||||
# Here the matching magic has to happen
|
# Here the matching magic has to happen
|
||||||
|
|
||||||
match = Match(photo.get_date, radiation_list, position_list)
|
match = Match(photo.get_date, radiation_list, position_list)
|
||||||
#print(match)
|
|
||||||
|
|
||||||
latitude = 51.0234024
|
|
||||||
longitude = 7.248347
|
|
||||||
radiation = 9001.15
|
|
||||||
elevation = 56.079345703125
|
|
||||||
|
|
||||||
# Write exif data
|
# Write exif data
|
||||||
exif_tags = Exif(photo.get_target_photo, args.dry, radiation, latitude, longitude, elevation)
|
exif_tags = Exif(photo.get_target_photo, args.dry, match.radiation[1],
|
||||||
#print(exif_tags)
|
match.position[1][1], match.position[1][2], match.position[1][3])
|
||||||
|
print(exif_tags)
|
||||||
# Print table header
|
|
||||||
print('{:<15} {:<25} {:<22}'.format('filename', 'date / time', 'Exif UserComment'))
|
|
||||||
|
|
Loading…
Reference in New Issue