История изменений
Исправление qulinxao3, (текущая версия) :
#!/usr/bin/env python3
# from fractions import Fraction
import sys,webbrowser,exifread
from collections import defaultdict
def convert_to_decimal(coord):
return sum(float(coord.values[i]) / (60**i) for i in(0,1,2)) # почему у sec с Fraction, а deg и min без
trans,res = defaultdict(str,dict(f"GPS GPSL{p}".split(",")for p in "atitude,lat ongitude,lon atitudeRef,lat_ref ongitudeRef,lon_ref".split()),),defaultdict(str)
with open(sys.argv[1], "rb") as file_handle: # запуск без арга(ов) словит исключение
for tag, value in exifread.process_file(file_handle).items():
if fld := trans[tag]:
res[fld] = (convert_to_decimal, str)[fld[-3:] == "ref"](value)
res["lat"] *= (-1) ** (res["lat_ref"] in ["S"])
res["lon"] *= (-1) ** (res["lon_ref"] in ["W"])
req = "https://www."+("openstreetmap.org/?mlat=%s&mlon=%s&zoom=18", "google.com/maps?q=%s,%s")[sys.argv[2:3] == ["google"]]
webbrowser.open(req % (res["lat"], res["lon"]))
Исходная версия qulinxao3, :
#!/usr/bin/env python3
# from fractions import Fraction
import sys
import webbrowser
import exifread
from collections import defaultdict
def convert_to_decimal(coord):
return sum(
float(coord.values[i]) / (60**i) for i in (0, 1, 2)
) # почему у sec с Fraction, а deg и min без
trans = defaultdict(
str,
dict(
f"GPS GPSL{p}".split(",")
for p in "atitude,lat ongitude,lon atitudeRef,lat_ref ongitudeRef,lon_ref".split()
),
)
res = defaultdict(str)
with open(sys.argv[1], "rb") as file_handle: # запуск без арга(ов) словит исключение
for tag, value in exifread.process_file(file_handle).items():
if fld := trans[tag]:
res[fld] = (convert_to_decimal, str)[fld[-3:] == "ref"](value)
res["lat"] *= (-1) ** (res["lat_ref"] in ["S"])
res["lon"] *= (-1) ** (res["lon_ref"] in ["W"])
req = (
"https://www."
+ ("openstreetmap.org/?mlat=%s&mlon=%s&zoom=18", "google.com/maps?q=%s,%s")[
sys.argv[2:3] == ["google"]
]
)
webbrowser.open(req % (res["lat"], res["lon"]))