geopic-tag-reader 1.2.0__py3-none-any.whl → 1.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geopic_tag_reader/__init__.py +1 -1
- geopic_tag_reader/main.py +4 -1
- geopic_tag_reader/reader.py +73 -31
- geopic_tag_reader/sequence.py +45 -4
- geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po +5 -1
- geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po +39 -27
- geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.po +146 -0
- geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo +0 -0
- geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po +5 -1
- geopic_tag_reader/translations/geopic_tag_reader.pot +38 -26
- {geopic_tag_reader-1.2.0.dist-info → geopic_tag_reader-1.3.0.dist-info}/METADATA +6 -6
- geopic_tag_reader-1.3.0.dist-info/RECORD +25 -0
- geopic_tag_reader-1.2.0.dist-info/RECORD +0 -23
- {geopic_tag_reader-1.2.0.dist-info → geopic_tag_reader-1.3.0.dist-info}/LICENSE +0 -0
- {geopic_tag_reader-1.2.0.dist-info → geopic_tag_reader-1.3.0.dist-info}/WHEEL +0 -0
- {geopic_tag_reader-1.2.0.dist-info → geopic_tag_reader-1.3.0.dist-info}/entry_points.txt +0 -0
geopic_tag_reader/__init__.py
CHANGED
geopic_tag_reader/main.py
CHANGED
|
@@ -25,7 +25,10 @@ def read(
|
|
|
25
25
|
_ = i18n_init(lang)
|
|
26
26
|
print(_("Latitude:"), metadata.lat)
|
|
27
27
|
print(_("Longitude:"), metadata.lon)
|
|
28
|
-
print(_("Timestamp:"), metadata.ts
|
|
28
|
+
print(_("Timestamp:"), metadata.ts)
|
|
29
|
+
if metadata.ts_by_source is not None:
|
|
30
|
+
print(" -", (metadata.ts_by_source.gps or _("not set")), _("(GPS)"))
|
|
31
|
+
print(" -", (metadata.ts_by_source.camera or _("not set")), _("(Camera)"))
|
|
29
32
|
print(_("Heading:"), metadata.heading)
|
|
30
33
|
print(_("Type:"), metadata.type)
|
|
31
34
|
print(_("Make:"), metadata.make)
|
geopic_tag_reader/reader.py
CHANGED
|
@@ -39,6 +39,32 @@ class CropValues:
|
|
|
39
39
|
top: int
|
|
40
40
|
|
|
41
41
|
|
|
42
|
+
@dataclass
|
|
43
|
+
class TimeBySource:
|
|
44
|
+
"""All datetimes read from available sources
|
|
45
|
+
|
|
46
|
+
Attributes:
|
|
47
|
+
gps (datetime): Time read from GPS clock
|
|
48
|
+
camera (datetime): Time read from camera clock (DateTimeOriginal)
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
gps: Optional[datetime.datetime] = None
|
|
52
|
+
camera: Optional[datetime.datetime] = None
|
|
53
|
+
|
|
54
|
+
def getBest(self) -> Optional[datetime.datetime]:
|
|
55
|
+
"""Get the best available datetime to use"""
|
|
56
|
+
if self.gps is not None and self.camera is None:
|
|
57
|
+
return self.gps
|
|
58
|
+
elif self.gps is None and self.camera is not None:
|
|
59
|
+
return self.camera
|
|
60
|
+
elif self.gps is None and self.camera is None:
|
|
61
|
+
return None
|
|
62
|
+
elif self.camera.microsecond > 0 and self.gps.microsecond == 0: # type: ignore
|
|
63
|
+
return self.camera
|
|
64
|
+
else:
|
|
65
|
+
return self.gps
|
|
66
|
+
|
|
67
|
+
|
|
42
68
|
@dataclass
|
|
43
69
|
class GeoPicTags:
|
|
44
70
|
"""Tags associated to a geolocated picture
|
|
@@ -59,6 +85,7 @@ class GeoPicTags:
|
|
|
59
85
|
pitch (float): Picture pitch angle, compared to horizon (in degrees, bottom = -90°, horizon = 0°, top = 90°)
|
|
60
86
|
roll (float): Picture roll angle, on a right/left axis (in degrees, left-arm down = -90°, flat = 0°, right-arm down = 90°)
|
|
61
87
|
yaw (float): Picture yaw angle, on a vertical axis (in degrees, front = 0°, right = 90°, rear = 180°, left = 270°). This offsets the center image from GPS direction for a correct 360° sphere correction
|
|
88
|
+
ts_by_source (TimeBySource): all read timestamps from image, for finer processing.
|
|
62
89
|
|
|
63
90
|
|
|
64
91
|
Implementation note: this needs to be sync with the PartialGeoPicTags structure
|
|
@@ -79,6 +106,7 @@ class GeoPicTags:
|
|
|
79
106
|
pitch: Optional[float] = None
|
|
80
107
|
roll: Optional[float] = None
|
|
81
108
|
yaw: Optional[float] = None
|
|
109
|
+
ts_by_source: Optional[TimeBySource] = None
|
|
82
110
|
|
|
83
111
|
|
|
84
112
|
class InvalidExifException(Exception):
|
|
@@ -114,6 +142,7 @@ class PartialGeoPicTags:
|
|
|
114
142
|
pitch: Optional[float] = None
|
|
115
143
|
roll: Optional[float] = None
|
|
116
144
|
yaw: Optional[float] = None
|
|
145
|
+
ts_by_source: Optional[TimeBySource] = None
|
|
117
146
|
|
|
118
147
|
|
|
119
148
|
class PartialExifException(Exception):
|
|
@@ -187,35 +216,21 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
187
216
|
if lon is not None and (lon < -180 or lon > 180):
|
|
188
217
|
raise InvalidExifException(_("Read longitude is out of WGS84 bounds (should be in [-180, 180])"))
|
|
189
218
|
|
|
190
|
-
# Parse date/time
|
|
191
|
-
|
|
219
|
+
# Parse GPS date/time
|
|
220
|
+
gpsTs, llw = decodeGPSDateTime(data, "Exif.GPSInfo", _, lat, lon)
|
|
192
221
|
|
|
193
222
|
if len(llw) > 0:
|
|
194
223
|
warnings.extend(llw)
|
|
195
224
|
|
|
196
|
-
if
|
|
197
|
-
|
|
225
|
+
if gpsTs is None:
|
|
226
|
+
gpsTs, llw = decodeGPSDateTime(data, "Xmp.exif", _, lat, lon)
|
|
198
227
|
if len(llw) > 0:
|
|
199
228
|
warnings.extend(llw)
|
|
200
229
|
|
|
201
|
-
|
|
202
|
-
"Exif.Image.DateTimeOriginal",
|
|
203
|
-
"Exif.Photo.DateTimeOriginal",
|
|
204
|
-
"Exif.Image.DateTime",
|
|
205
|
-
"Xmp.GPano.SourceImageCreateTime",
|
|
206
|
-
]:
|
|
207
|
-
if d is None:
|
|
208
|
-
d, llw = decodeDateTimeOriginal(data, exifField, _, lat, lon)
|
|
209
|
-
if len(llw) > 0:
|
|
210
|
-
warnings.extend(llw)
|
|
211
|
-
|
|
212
|
-
if d is not None:
|
|
213
|
-
break
|
|
214
|
-
|
|
215
|
-
if d is None and isExifTagUsable(data, "MAPGpsTime"):
|
|
230
|
+
if gpsTs is None and isExifTagUsable(data, "MAPGpsTime"):
|
|
216
231
|
try:
|
|
217
232
|
year, month, day, hour, minutes, seconds, milliseconds = [int(dp) for dp in data["MAPGpsTime"].split("_")]
|
|
218
|
-
|
|
233
|
+
gpsTs = datetime.datetime(
|
|
219
234
|
year,
|
|
220
235
|
month,
|
|
221
236
|
day,
|
|
@@ -229,6 +244,25 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
229
244
|
except Exception as e:
|
|
230
245
|
warnings.append(_("Skipping Mapillary date/time as it was not recognized: {v}").format(v=data["MAPGpsTime"]))
|
|
231
246
|
|
|
247
|
+
# Parse camera date/time
|
|
248
|
+
cameraTs = None
|
|
249
|
+
for exifGroup, dtField, subsecField in [
|
|
250
|
+
("Exif.Photo", "DateTimeOriginal", "SubSecTimeOriginal"),
|
|
251
|
+
("Exif.Image", "DateTimeOriginal", "SubSecTimeOriginal"),
|
|
252
|
+
("Exif.Image", "DateTime", "SubSecTimeOriginal"),
|
|
253
|
+
("Xmp.GPano", "SourceImageCreateTime", "SubSecTimeOriginal"),
|
|
254
|
+
("Xmp.exif", "DateTimeOriginal", "SubsecTimeOriginal"), # Case matters
|
|
255
|
+
]:
|
|
256
|
+
if cameraTs is None:
|
|
257
|
+
cameraTs, llw = decodeDateTimeOriginal(data, exifGroup, dtField, subsecField, _, lat, lon)
|
|
258
|
+
if len(llw) > 0:
|
|
259
|
+
warnings.extend(llw)
|
|
260
|
+
|
|
261
|
+
if cameraTs is not None:
|
|
262
|
+
break
|
|
263
|
+
tsSources = TimeBySource(gps=gpsTs, camera=cameraTs) if gpsTs or cameraTs else None
|
|
264
|
+
d = tsSources.getBest() if tsSources is not None else None
|
|
265
|
+
|
|
232
266
|
# GPS Heading
|
|
233
267
|
heading = None
|
|
234
268
|
if isExifTagUsable(data, "Exif.GPSInfo.GPSImgDirection", Fraction):
|
|
@@ -370,6 +404,7 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
370
404
|
pitch=pitch,
|
|
371
405
|
roll=roll,
|
|
372
406
|
yaw=yaw,
|
|
407
|
+
ts_by_source=tsSources,
|
|
373
408
|
),
|
|
374
409
|
)
|
|
375
410
|
|
|
@@ -390,6 +425,7 @@ def readPictureMetadata(picture: bytes, lang_code: str = "en") -> GeoPicTags:
|
|
|
390
425
|
pitch=pitch,
|
|
391
426
|
roll=roll,
|
|
392
427
|
yaw=yaw,
|
|
428
|
+
ts_by_source=tsSources,
|
|
393
429
|
)
|
|
394
430
|
|
|
395
431
|
|
|
@@ -480,20 +516,28 @@ def decodeLatLon(data: dict, group: str, _: Callable[[str], str]) -> Tuple[Optio
|
|
|
480
516
|
|
|
481
517
|
|
|
482
518
|
def decodeDateTimeOriginal(
|
|
483
|
-
data: dict,
|
|
519
|
+
data: dict,
|
|
520
|
+
exifGroup: str,
|
|
521
|
+
datetimeField: str,
|
|
522
|
+
subsecField: str,
|
|
523
|
+
_: Callable[[str], str],
|
|
524
|
+
lat: Optional[float] = None,
|
|
525
|
+
lon: Optional[float] = None,
|
|
484
526
|
) -> Tuple[Optional[datetime.datetime], List[str]]:
|
|
485
527
|
d = None
|
|
486
528
|
warnings = []
|
|
529
|
+
dtField = f"{exifGroup}.{datetimeField}"
|
|
530
|
+
ssField = f"{exifGroup}.{subsecField}"
|
|
487
531
|
|
|
488
|
-
if d is None and isExifTagUsable(data,
|
|
532
|
+
if d is None and isExifTagUsable(data, dtField):
|
|
489
533
|
try:
|
|
490
|
-
dateRaw = data[
|
|
491
|
-
timeRaw = data[
|
|
534
|
+
dateRaw = data[dtField][:10].replace(":", "-")
|
|
535
|
+
timeRaw = data[dtField][11:].split(":")
|
|
492
536
|
hourRaw = int(timeRaw[0])
|
|
493
537
|
minutesRaw = int(timeRaw[1])
|
|
494
538
|
secondsRaw, microsecondsRaw, msw = decodeSecondsAndMicroSeconds(
|
|
495
|
-
timeRaw[2],
|
|
496
|
-
data[
|
|
539
|
+
timeRaw[2] if len(timeRaw) >= 3 else "0",
|
|
540
|
+
data[ssField] if isExifTagUsable(data, ssField, float) else "0",
|
|
497
541
|
_,
|
|
498
542
|
)
|
|
499
543
|
warnings += msw
|
|
@@ -510,7 +554,7 @@ def decodeDateTimeOriginal(
|
|
|
510
554
|
|
|
511
555
|
# Timezone handling
|
|
512
556
|
# Try to read from EXIF
|
|
513
|
-
tz = decodeTimeOffset(data, f"
|
|
557
|
+
tz = decodeTimeOffset(data, f"{exifGroup}.OffsetTime{'Original' if 'DateTimeOriginal' in dtField else ''}")
|
|
514
558
|
if tz is not None:
|
|
515
559
|
d = d.replace(tzinfo=tz)
|
|
516
560
|
|
|
@@ -531,9 +575,7 @@ def decodeDateTimeOriginal(
|
|
|
531
575
|
|
|
532
576
|
except ValueError as e:
|
|
533
577
|
warnings.append(
|
|
534
|
-
_("Skipping original date/time (from {datefield}) as it was not recognized: {v}").format(
|
|
535
|
-
datefield=datetimeField, v=data[datetimeField]
|
|
536
|
-
)
|
|
578
|
+
_("Skipping original date/time (from {datefield}) as it was not recognized: {v}").format(datefield=dtField, v=data[dtField])
|
|
537
579
|
)
|
|
538
580
|
|
|
539
581
|
return (d, warnings)
|
|
@@ -571,7 +613,7 @@ def decodeGPSDateTime(
|
|
|
571
613
|
if timeRaw:
|
|
572
614
|
seconds, microseconds, msw = decodeSecondsAndMicroSeconds(
|
|
573
615
|
str(float(timeRaw[2])),
|
|
574
|
-
|
|
616
|
+
"0", # No SubSecTimeOriginal, it's only for DateTimeOriginal
|
|
575
617
|
_,
|
|
576
618
|
)
|
|
577
619
|
|
geopic_tag_reader/sequence.py
CHANGED
|
@@ -143,7 +143,35 @@ def sort_pictures(pictures: List[Picture], method: Optional[SortMethod] = SortMe
|
|
|
143
143
|
|
|
144
144
|
# Sort based on picture ts
|
|
145
145
|
elif strat == "time":
|
|
146
|
-
|
|
146
|
+
# Check if all pictures have GPS ts set
|
|
147
|
+
missingGpsTs = next(
|
|
148
|
+
(p for p in pictures if p.metadata is None or p.metadata.ts_by_source is None or p.metadata.ts_by_source.gps is None), None
|
|
149
|
+
)
|
|
150
|
+
if missingGpsTs:
|
|
151
|
+
# Check if all pictures have camera ts set
|
|
152
|
+
missingCamTs = next(
|
|
153
|
+
(p for p in pictures if p.metadata is None or p.metadata.ts_by_source is None or p.metadata.ts_by_source.camera is None),
|
|
154
|
+
None,
|
|
155
|
+
)
|
|
156
|
+
# Sort by best ts available
|
|
157
|
+
if missingCamTs:
|
|
158
|
+
pictures.sort(key=lambda p: p.metadata.ts.isoformat() if p.metadata is not None else "0000-00-00T00:00:00Z")
|
|
159
|
+
# Sort by camera ts
|
|
160
|
+
else:
|
|
161
|
+
pictures.sort(
|
|
162
|
+
key=lambda p: (
|
|
163
|
+
p.metadata.ts_by_source.camera.isoformat(), # type: ignore
|
|
164
|
+
p.metadata.ts_by_source.gps.isoformat() if p.metadata.ts_by_source.gps else "0000-00-00T00:00:00Z", # type: ignore
|
|
165
|
+
)
|
|
166
|
+
)
|
|
167
|
+
# Sort by GPS ts
|
|
168
|
+
else:
|
|
169
|
+
pictures.sort(
|
|
170
|
+
key=lambda p: (
|
|
171
|
+
p.metadata.ts_by_source.gps.isoformat(), # type: ignore
|
|
172
|
+
p.metadata.ts_by_source.camera.isoformat() if p.metadata.ts_by_source.camera else "0000-00-00T00:00:00Z", # type: ignore
|
|
173
|
+
)
|
|
174
|
+
)
|
|
147
175
|
|
|
148
176
|
if order == "desc":
|
|
149
177
|
pictures.reverse()
|
|
@@ -244,9 +272,22 @@ def split_in_sequences(pictures: List[Picture], splitParams: Optional[SplitParam
|
|
|
244
272
|
continue
|
|
245
273
|
|
|
246
274
|
# Time delta
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
275
|
+
timeDelta = lastPic.metadata.ts - pic.metadata.ts
|
|
276
|
+
if (
|
|
277
|
+
lastPic.metadata.ts_by_source
|
|
278
|
+
and lastPic.metadata.ts_by_source.gps
|
|
279
|
+
and pic.metadata.ts_by_source
|
|
280
|
+
and pic.metadata.ts_by_source.gps
|
|
281
|
+
):
|
|
282
|
+
timeDelta = lastPic.metadata.ts_by_source.gps - pic.metadata.ts_by_source.gps
|
|
283
|
+
elif (
|
|
284
|
+
lastPic.metadata.ts_by_source
|
|
285
|
+
and lastPic.metadata.ts_by_source.camera
|
|
286
|
+
and pic.metadata.ts_by_source
|
|
287
|
+
and pic.metadata.ts_by_source.camera
|
|
288
|
+
):
|
|
289
|
+
timeDelta = lastPic.metadata.ts_by_source.camera - pic.metadata.ts_by_source.camera
|
|
290
|
+
timeOutOfDelta = False if splitParams.maxTime is None else (abs(timeDelta)).total_seconds() > splitParams.maxTime
|
|
250
291
|
|
|
251
292
|
# Distance delta
|
|
252
293
|
distance = lastPic.distance_to(pic)
|
|
Binary file
|
|
@@ -8,7 +8,7 @@ msgstr ""
|
|
|
8
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
10
|
"POT-Creation-Date: 2024-07-10 13:05+0200\n"
|
|
11
|
-
"PO-Revision-Date: 2024-07
|
|
11
|
+
"PO-Revision-Date: 2024-08-07 13:42+0000\n"
|
|
12
12
|
"Last-Translator: Bastian Greshake Tzovaras <bastian@gedankenstuecke.de>\n"
|
|
13
13
|
"Language-Team: German <http://weblate.panoramax.xyz/projects/panoramax/"
|
|
14
14
|
"tag-reader/de/>\n"
|
|
@@ -163,3 +163,7 @@ msgstr ""
|
|
|
163
163
|
#, python-brace-format
|
|
164
164
|
msgid "Unsupported key in additional tags ({k})"
|
|
165
165
|
msgstr "Nicht unterstützter Schlüssel in den zusätzlichen Attributen ({k})"
|
|
166
|
+
|
|
167
|
+
#: geopic_tag_reader/main.py:37
|
|
168
|
+
msgid "Yaw:"
|
|
169
|
+
msgstr "Gierwinkel:"
|
|
Binary file
|
|
@@ -7,8 +7,8 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
|
-
"POT-Creation-Date: 2024-
|
|
11
|
-
"PO-Revision-Date: 2024-
|
|
10
|
+
"POT-Creation-Date: 2024-09-30 11:02+0200\n"
|
|
11
|
+
"PO-Revision-Date: 2024-09-30 11:02+0200\n"
|
|
12
12
|
"Last-Translator: Automatically generated\n"
|
|
13
13
|
"Language-Team: none\n"
|
|
14
14
|
"Language: en\n"
|
|
@@ -29,88 +29,100 @@ msgstr "Longitude:"
|
|
|
29
29
|
msgid "Timestamp:"
|
|
30
30
|
msgstr "Timestamp:"
|
|
31
31
|
|
|
32
|
-
#: geopic_tag_reader/main.py:
|
|
32
|
+
#: geopic_tag_reader/main.py:30 geopic_tag_reader/main.py:31
|
|
33
|
+
msgid "not set"
|
|
34
|
+
msgstr "not set"
|
|
35
|
+
|
|
36
|
+
#: geopic_tag_reader/main.py:30
|
|
37
|
+
msgid "(GPS)"
|
|
38
|
+
msgstr "(GPS)"
|
|
39
|
+
|
|
40
|
+
#: geopic_tag_reader/main.py:31
|
|
41
|
+
msgid "(Camera)"
|
|
42
|
+
msgstr "(Camera)"
|
|
43
|
+
|
|
44
|
+
#: geopic_tag_reader/main.py:32
|
|
33
45
|
msgid "Heading:"
|
|
34
46
|
msgstr "Heading:"
|
|
35
47
|
|
|
36
|
-
#: geopic_tag_reader/main.py:
|
|
48
|
+
#: geopic_tag_reader/main.py:33
|
|
37
49
|
msgid "Type:"
|
|
38
50
|
msgstr "Type:"
|
|
39
51
|
|
|
40
|
-
#: geopic_tag_reader/main.py:
|
|
52
|
+
#: geopic_tag_reader/main.py:34
|
|
41
53
|
msgid "Make:"
|
|
42
54
|
msgstr "Make:"
|
|
43
55
|
|
|
44
|
-
#: geopic_tag_reader/main.py:
|
|
56
|
+
#: geopic_tag_reader/main.py:35
|
|
45
57
|
msgid "Model:"
|
|
46
58
|
msgstr "Model:"
|
|
47
59
|
|
|
48
|
-
#: geopic_tag_reader/main.py:
|
|
60
|
+
#: geopic_tag_reader/main.py:36
|
|
49
61
|
msgid "Focal length:"
|
|
50
62
|
msgstr "Focal length:"
|
|
51
63
|
|
|
52
|
-
#: geopic_tag_reader/main.py:
|
|
64
|
+
#: geopic_tag_reader/main.py:37
|
|
53
65
|
msgid "Crop parameters:"
|
|
54
66
|
msgstr "Crop parameters:"
|
|
55
67
|
|
|
56
|
-
#: geopic_tag_reader/main.py:
|
|
68
|
+
#: geopic_tag_reader/main.py:38
|
|
57
69
|
msgid "Pitch:"
|
|
58
70
|
msgstr "Pitch:"
|
|
59
71
|
|
|
60
|
-
#: geopic_tag_reader/main.py:
|
|
72
|
+
#: geopic_tag_reader/main.py:39
|
|
61
73
|
msgid "Roll:"
|
|
62
74
|
msgstr "Roll:"
|
|
63
75
|
|
|
64
|
-
#: geopic_tag_reader/main.py:
|
|
76
|
+
#: geopic_tag_reader/main.py:40
|
|
65
77
|
msgid "Yaw:"
|
|
66
78
|
msgstr "Yaw:"
|
|
67
79
|
|
|
68
|
-
#: geopic_tag_reader/main.py:
|
|
80
|
+
#: geopic_tag_reader/main.py:43
|
|
69
81
|
msgid "Warnings raised by reader:"
|
|
70
82
|
msgstr "Warnings raised by reader:"
|
|
71
83
|
|
|
72
|
-
#: geopic_tag_reader/reader.py:
|
|
84
|
+
#: geopic_tag_reader/reader.py:215
|
|
73
85
|
msgid "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
|
|
74
86
|
msgstr "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
|
|
75
87
|
|
|
76
|
-
#: geopic_tag_reader/reader.py:
|
|
88
|
+
#: geopic_tag_reader/reader.py:217
|
|
77
89
|
msgid "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
|
|
78
90
|
msgstr "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
|
|
79
91
|
|
|
80
|
-
#: geopic_tag_reader/reader.py:
|
|
92
|
+
#: geopic_tag_reader/reader.py:245
|
|
81
93
|
#, python-brace-format
|
|
82
94
|
msgid "Skipping Mapillary date/time as it was not recognized: {v}"
|
|
83
95
|
msgstr "Skipping Mapillary date/time as it was not recognized: {v}"
|
|
84
96
|
|
|
85
|
-
#: geopic_tag_reader/reader.py:
|
|
97
|
+
#: geopic_tag_reader/reader.py:371
|
|
86
98
|
msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
87
99
|
msgstr "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
88
100
|
|
|
89
|
-
#: geopic_tag_reader/reader.py:
|
|
101
|
+
#: geopic_tag_reader/reader.py:377
|
|
90
102
|
msgid "No valid date in picture EXIF tags"
|
|
91
103
|
msgstr "No valid date in picture EXIF tags"
|
|
92
104
|
|
|
93
|
-
#: geopic_tag_reader/reader.py:
|
|
105
|
+
#: geopic_tag_reader/reader.py:382
|
|
94
106
|
msgid "The picture is missing mandatory metadata:"
|
|
95
107
|
msgstr "The picture is missing mandatory metadata:"
|
|
96
108
|
|
|
97
|
-
#: geopic_tag_reader/reader.py:
|
|
109
|
+
#: geopic_tag_reader/reader.py:473 geopic_tag_reader/reader.py:502
|
|
98
110
|
msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
99
111
|
msgstr "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
100
112
|
|
|
101
|
-
#: geopic_tag_reader/reader.py:
|
|
113
|
+
#: geopic_tag_reader/reader.py:481
|
|
102
114
|
msgid "Broken GPS coordinates in picture EXIF tags"
|
|
103
115
|
msgstr "Broken GPS coordinates in picture EXIF tags"
|
|
104
116
|
|
|
105
|
-
#: geopic_tag_reader/reader.py:
|
|
117
|
+
#: geopic_tag_reader/reader.py:484 geopic_tag_reader/reader.py:508
|
|
106
118
|
msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
107
119
|
msgstr "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
108
120
|
|
|
109
|
-
#: geopic_tag_reader/reader.py:
|
|
121
|
+
#: geopic_tag_reader/reader.py:569
|
|
110
122
|
msgid "Precise timezone information not found, fallback to UTC"
|
|
111
123
|
msgstr "Precise timezone information not found, fallback to UTC"
|
|
112
124
|
|
|
113
|
-
#: geopic_tag_reader/reader.py:
|
|
125
|
+
#: geopic_tag_reader/reader.py:574
|
|
114
126
|
msgid ""
|
|
115
127
|
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
116
128
|
"fallback to UTC"
|
|
@@ -118,14 +130,14 @@ msgstr ""
|
|
|
118
130
|
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
119
131
|
"fallback to UTC"
|
|
120
132
|
|
|
121
|
-
#: geopic_tag_reader/reader.py:
|
|
133
|
+
#: geopic_tag_reader/reader.py:578
|
|
122
134
|
#, python-brace-format
|
|
123
135
|
msgid ""
|
|
124
136
|
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
125
137
|
msgstr ""
|
|
126
138
|
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
127
139
|
|
|
128
|
-
#: geopic_tag_reader/reader.py:
|
|
140
|
+
#: geopic_tag_reader/reader.py:610
|
|
129
141
|
#, python-brace-format
|
|
130
142
|
msgid ""
|
|
131
143
|
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
@@ -134,12 +146,12 @@ msgstr ""
|
|
|
134
146
|
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
135
147
|
"group)"
|
|
136
148
|
|
|
137
|
-
#: geopic_tag_reader/reader.py:
|
|
149
|
+
#: geopic_tag_reader/reader.py:641
|
|
138
150
|
#, python-brace-format
|
|
139
151
|
msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
140
152
|
msgstr "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
141
153
|
|
|
142
|
-
#: geopic_tag_reader/reader.py:
|
|
154
|
+
#: geopic_tag_reader/reader.py:667
|
|
143
155
|
#, python-brace-format
|
|
144
156
|
msgid ""
|
|
145
157
|
"Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "
|
|
Binary file
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# SOME DESCRIPTIVE TITLE.
|
|
2
|
+
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
3
|
+
# This file is distributed under the same license as the PACKAGE package.
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
5
|
+
#
|
|
6
|
+
msgid ""
|
|
7
|
+
msgstr ""
|
|
8
|
+
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
|
+
"Report-Msgid-Bugs-To: \n"
|
|
10
|
+
"POT-Creation-Date: 2024-07-30 16:49+0200\n"
|
|
11
|
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
12
|
+
"Last-Translator: Automatically generated\n"
|
|
13
|
+
"Language-Team: none\n"
|
|
14
|
+
"Language: fi\n"
|
|
15
|
+
"MIME-Version: 1.0\n"
|
|
16
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
18
|
+
|
|
19
|
+
#: geopic_tag_reader/main.py:26
|
|
20
|
+
msgid "Latitude:"
|
|
21
|
+
msgstr ""
|
|
22
|
+
|
|
23
|
+
#: geopic_tag_reader/main.py:27
|
|
24
|
+
msgid "Longitude:"
|
|
25
|
+
msgstr ""
|
|
26
|
+
|
|
27
|
+
#: geopic_tag_reader/main.py:28
|
|
28
|
+
msgid "Timestamp:"
|
|
29
|
+
msgstr ""
|
|
30
|
+
|
|
31
|
+
#: geopic_tag_reader/main.py:29
|
|
32
|
+
msgid "Heading:"
|
|
33
|
+
msgstr ""
|
|
34
|
+
|
|
35
|
+
#: geopic_tag_reader/main.py:30
|
|
36
|
+
msgid "Type:"
|
|
37
|
+
msgstr ""
|
|
38
|
+
|
|
39
|
+
#: geopic_tag_reader/main.py:31
|
|
40
|
+
msgid "Make:"
|
|
41
|
+
msgstr ""
|
|
42
|
+
|
|
43
|
+
#: geopic_tag_reader/main.py:32
|
|
44
|
+
msgid "Model:"
|
|
45
|
+
msgstr ""
|
|
46
|
+
|
|
47
|
+
#: geopic_tag_reader/main.py:33
|
|
48
|
+
msgid "Focal length:"
|
|
49
|
+
msgstr ""
|
|
50
|
+
|
|
51
|
+
#: geopic_tag_reader/main.py:34
|
|
52
|
+
msgid "Crop parameters:"
|
|
53
|
+
msgstr ""
|
|
54
|
+
|
|
55
|
+
#: geopic_tag_reader/main.py:35
|
|
56
|
+
msgid "Pitch:"
|
|
57
|
+
msgstr ""
|
|
58
|
+
|
|
59
|
+
#: geopic_tag_reader/main.py:36
|
|
60
|
+
msgid "Roll:"
|
|
61
|
+
msgstr ""
|
|
62
|
+
|
|
63
|
+
#: geopic_tag_reader/main.py:37
|
|
64
|
+
msgid "Yaw:"
|
|
65
|
+
msgstr ""
|
|
66
|
+
|
|
67
|
+
#: geopic_tag_reader/main.py:40
|
|
68
|
+
msgid "Warnings raised by reader:"
|
|
69
|
+
msgstr ""
|
|
70
|
+
|
|
71
|
+
#: geopic_tag_reader/reader.py:186
|
|
72
|
+
msgid "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
|
|
73
|
+
msgstr ""
|
|
74
|
+
|
|
75
|
+
#: geopic_tag_reader/reader.py:188
|
|
76
|
+
msgid "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
|
|
77
|
+
msgstr ""
|
|
78
|
+
|
|
79
|
+
#: geopic_tag_reader/reader.py:230
|
|
80
|
+
#, python-brace-format
|
|
81
|
+
msgid "Skipping Mapillary date/time as it was not recognized: {v}"
|
|
82
|
+
msgstr ""
|
|
83
|
+
|
|
84
|
+
#: geopic_tag_reader/reader.py:337
|
|
85
|
+
msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
86
|
+
msgstr ""
|
|
87
|
+
|
|
88
|
+
#: geopic_tag_reader/reader.py:343
|
|
89
|
+
msgid "No valid date in picture EXIF tags"
|
|
90
|
+
msgstr ""
|
|
91
|
+
|
|
92
|
+
#: geopic_tag_reader/reader.py:348
|
|
93
|
+
msgid "The picture is missing mandatory metadata:"
|
|
94
|
+
msgstr ""
|
|
95
|
+
|
|
96
|
+
#: geopic_tag_reader/reader.py:437 geopic_tag_reader/reader.py:466
|
|
97
|
+
msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
98
|
+
msgstr ""
|
|
99
|
+
|
|
100
|
+
#: geopic_tag_reader/reader.py:445
|
|
101
|
+
msgid "Broken GPS coordinates in picture EXIF tags"
|
|
102
|
+
msgstr ""
|
|
103
|
+
|
|
104
|
+
#: geopic_tag_reader/reader.py:448 geopic_tag_reader/reader.py:472
|
|
105
|
+
msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
106
|
+
msgstr ""
|
|
107
|
+
|
|
108
|
+
#: geopic_tag_reader/reader.py:525
|
|
109
|
+
msgid "Precise timezone information not found, fallback to UTC"
|
|
110
|
+
msgstr ""
|
|
111
|
+
|
|
112
|
+
#: geopic_tag_reader/reader.py:530
|
|
113
|
+
msgid ""
|
|
114
|
+
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
115
|
+
"fallback to UTC"
|
|
116
|
+
msgstr ""
|
|
117
|
+
|
|
118
|
+
#: geopic_tag_reader/reader.py:534
|
|
119
|
+
#, python-brace-format
|
|
120
|
+
msgid ""
|
|
121
|
+
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
122
|
+
msgstr ""
|
|
123
|
+
|
|
124
|
+
#: geopic_tag_reader/reader.py:568
|
|
125
|
+
#, python-brace-format
|
|
126
|
+
msgid ""
|
|
127
|
+
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
128
|
+
"group)"
|
|
129
|
+
msgstr ""
|
|
130
|
+
|
|
131
|
+
#: geopic_tag_reader/reader.py:599
|
|
132
|
+
#, python-brace-format
|
|
133
|
+
msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
134
|
+
msgstr ""
|
|
135
|
+
|
|
136
|
+
#: geopic_tag_reader/reader.py:625
|
|
137
|
+
#, python-brace-format
|
|
138
|
+
msgid ""
|
|
139
|
+
"Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "
|
|
140
|
+
"not matching value from EXIF field ({microseconds}). Max value will be kept."
|
|
141
|
+
msgstr ""
|
|
142
|
+
|
|
143
|
+
#: geopic_tag_reader/writer.py:132
|
|
144
|
+
#, python-brace-format
|
|
145
|
+
msgid "Unsupported key in additional tags ({k})"
|
|
146
|
+
msgstr ""
|
|
Binary file
|
|
@@ -8,7 +8,7 @@ msgstr ""
|
|
|
8
8
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
10
|
"POT-Creation-Date: 2024-06-18 09:12+0200\n"
|
|
11
|
-
"PO-Revision-Date: 2024-
|
|
11
|
+
"PO-Revision-Date: 2024-08-29 10:07+0000\n"
|
|
12
12
|
"Last-Translator: PanierAvide <adrien@pavie.info>\n"
|
|
13
13
|
"Language-Team: French <http://weblate.panoramax.xyz/projects/panoramax/"
|
|
14
14
|
"tag-reader/fr/>\n"
|
|
@@ -188,3 +188,7 @@ msgid ""
|
|
|
188
188
|
msgstr ""
|
|
189
189
|
"Date/heure originales (venant de {datefield}) ignorées car non-reconnues : "
|
|
190
190
|
"{v}"
|
|
191
|
+
|
|
192
|
+
#: geopic_tag_reader/main.py:37
|
|
193
|
+
msgid "Yaw:"
|
|
194
|
+
msgstr "Lacet :"
|
|
@@ -8,7 +8,7 @@ msgid ""
|
|
|
8
8
|
msgstr ""
|
|
9
9
|
"Project-Id-Version: PACKAGE VERSION\n"
|
|
10
10
|
"Report-Msgid-Bugs-To: \n"
|
|
11
|
-
"POT-Creation-Date: 2024-
|
|
11
|
+
"POT-Creation-Date: 2024-09-30 11:02+0200\n"
|
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -29,112 +29,124 @@ msgstr ""
|
|
|
29
29
|
msgid "Timestamp:"
|
|
30
30
|
msgstr ""
|
|
31
31
|
|
|
32
|
-
#: geopic_tag_reader/main.py:
|
|
33
|
-
msgid "
|
|
32
|
+
#: geopic_tag_reader/main.py:30 geopic_tag_reader/main.py:31
|
|
33
|
+
msgid "not set"
|
|
34
34
|
msgstr ""
|
|
35
35
|
|
|
36
36
|
#: geopic_tag_reader/main.py:30
|
|
37
|
-
msgid "
|
|
37
|
+
msgid "(GPS)"
|
|
38
38
|
msgstr ""
|
|
39
39
|
|
|
40
40
|
#: geopic_tag_reader/main.py:31
|
|
41
|
-
msgid "
|
|
41
|
+
msgid "(Camera)"
|
|
42
42
|
msgstr ""
|
|
43
43
|
|
|
44
44
|
#: geopic_tag_reader/main.py:32
|
|
45
|
-
msgid "
|
|
45
|
+
msgid "Heading:"
|
|
46
46
|
msgstr ""
|
|
47
47
|
|
|
48
48
|
#: geopic_tag_reader/main.py:33
|
|
49
|
-
msgid "
|
|
49
|
+
msgid "Type:"
|
|
50
50
|
msgstr ""
|
|
51
51
|
|
|
52
52
|
#: geopic_tag_reader/main.py:34
|
|
53
|
-
msgid "
|
|
53
|
+
msgid "Make:"
|
|
54
54
|
msgstr ""
|
|
55
55
|
|
|
56
56
|
#: geopic_tag_reader/main.py:35
|
|
57
|
-
msgid "
|
|
57
|
+
msgid "Model:"
|
|
58
58
|
msgstr ""
|
|
59
59
|
|
|
60
60
|
#: geopic_tag_reader/main.py:36
|
|
61
|
-
msgid "
|
|
61
|
+
msgid "Focal length:"
|
|
62
62
|
msgstr ""
|
|
63
63
|
|
|
64
64
|
#: geopic_tag_reader/main.py:37
|
|
65
|
-
msgid "
|
|
65
|
+
msgid "Crop parameters:"
|
|
66
|
+
msgstr ""
|
|
67
|
+
|
|
68
|
+
#: geopic_tag_reader/main.py:38
|
|
69
|
+
msgid "Pitch:"
|
|
70
|
+
msgstr ""
|
|
71
|
+
|
|
72
|
+
#: geopic_tag_reader/main.py:39
|
|
73
|
+
msgid "Roll:"
|
|
66
74
|
msgstr ""
|
|
67
75
|
|
|
68
76
|
#: geopic_tag_reader/main.py:40
|
|
77
|
+
msgid "Yaw:"
|
|
78
|
+
msgstr ""
|
|
79
|
+
|
|
80
|
+
#: geopic_tag_reader/main.py:43
|
|
69
81
|
msgid "Warnings raised by reader:"
|
|
70
82
|
msgstr ""
|
|
71
83
|
|
|
72
|
-
#: geopic_tag_reader/reader.py:
|
|
84
|
+
#: geopic_tag_reader/reader.py:215
|
|
73
85
|
msgid "Read latitude is out of WGS84 bounds (should be in [-90, 90])"
|
|
74
86
|
msgstr ""
|
|
75
87
|
|
|
76
|
-
#: geopic_tag_reader/reader.py:
|
|
88
|
+
#: geopic_tag_reader/reader.py:217
|
|
77
89
|
msgid "Read longitude is out of WGS84 bounds (should be in [-180, 180])"
|
|
78
90
|
msgstr ""
|
|
79
91
|
|
|
80
|
-
#: geopic_tag_reader/reader.py:
|
|
92
|
+
#: geopic_tag_reader/reader.py:245
|
|
81
93
|
#, python-brace-format
|
|
82
94
|
msgid "Skipping Mapillary date/time as it was not recognized: {v}"
|
|
83
95
|
msgstr ""
|
|
84
96
|
|
|
85
|
-
#: geopic_tag_reader/reader.py:
|
|
97
|
+
#: geopic_tag_reader/reader.py:371
|
|
86
98
|
msgid "No GPS coordinates or broken coordinates in picture EXIF tags"
|
|
87
99
|
msgstr ""
|
|
88
100
|
|
|
89
|
-
#: geopic_tag_reader/reader.py:
|
|
101
|
+
#: geopic_tag_reader/reader.py:377
|
|
90
102
|
msgid "No valid date in picture EXIF tags"
|
|
91
103
|
msgstr ""
|
|
92
104
|
|
|
93
|
-
#: geopic_tag_reader/reader.py:
|
|
105
|
+
#: geopic_tag_reader/reader.py:382
|
|
94
106
|
msgid "The picture is missing mandatory metadata:"
|
|
95
107
|
msgstr ""
|
|
96
108
|
|
|
97
|
-
#: geopic_tag_reader/reader.py:
|
|
109
|
+
#: geopic_tag_reader/reader.py:473 geopic_tag_reader/reader.py:502
|
|
98
110
|
msgid "GPSLatitudeRef not found, assuming GPSLatitudeRef is North"
|
|
99
111
|
msgstr ""
|
|
100
112
|
|
|
101
|
-
#: geopic_tag_reader/reader.py:
|
|
113
|
+
#: geopic_tag_reader/reader.py:481
|
|
102
114
|
msgid "Broken GPS coordinates in picture EXIF tags"
|
|
103
115
|
msgstr ""
|
|
104
116
|
|
|
105
|
-
#: geopic_tag_reader/reader.py:
|
|
117
|
+
#: geopic_tag_reader/reader.py:484 geopic_tag_reader/reader.py:508
|
|
106
118
|
msgid "GPSLongitudeRef not found, assuming GPSLongitudeRef is East"
|
|
107
119
|
msgstr ""
|
|
108
120
|
|
|
109
|
-
#: geopic_tag_reader/reader.py:
|
|
121
|
+
#: geopic_tag_reader/reader.py:569
|
|
110
122
|
msgid "Precise timezone information not found, fallback to UTC"
|
|
111
123
|
msgstr ""
|
|
112
124
|
|
|
113
|
-
#: geopic_tag_reader/reader.py:
|
|
125
|
+
#: geopic_tag_reader/reader.py:574
|
|
114
126
|
msgid ""
|
|
115
127
|
"Precise timezone information not found (and no GPS coordinates to help), "
|
|
116
128
|
"fallback to UTC"
|
|
117
129
|
msgstr ""
|
|
118
130
|
|
|
119
|
-
#: geopic_tag_reader/reader.py:
|
|
131
|
+
#: geopic_tag_reader/reader.py:578
|
|
120
132
|
#, python-brace-format
|
|
121
133
|
msgid ""
|
|
122
134
|
"Skipping original date/time (from {datefield}) as it was not recognized: {v}"
|
|
123
135
|
msgstr ""
|
|
124
136
|
|
|
125
|
-
#: geopic_tag_reader/reader.py:
|
|
137
|
+
#: geopic_tag_reader/reader.py:610
|
|
126
138
|
#, python-brace-format
|
|
127
139
|
msgid ""
|
|
128
140
|
"GPSTimeStamp and GPSDateTime don't contain supported time format (in {group} "
|
|
129
141
|
"group)"
|
|
130
142
|
msgstr ""
|
|
131
143
|
|
|
132
|
-
#: geopic_tag_reader/reader.py:
|
|
144
|
+
#: geopic_tag_reader/reader.py:641
|
|
133
145
|
#, python-brace-format
|
|
134
146
|
msgid "Skipping GPS date/time ({group} group) as it was not recognized: {v}"
|
|
135
147
|
msgstr ""
|
|
136
148
|
|
|
137
|
-
#: geopic_tag_reader/reader.py:
|
|
149
|
+
#: geopic_tag_reader/reader.py:667
|
|
138
150
|
#, python-brace-format
|
|
139
151
|
msgid ""
|
|
140
152
|
"Microseconds read from decimal seconds value ({microsecondsFromSeconds}) is "
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: geopic-tag-reader
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: GeoPicTagReader
|
|
5
5
|
Author-email: Adrien PAVIE <panieravide@riseup.net>
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -31,7 +31,7 @@ Provides-Extra: write-exif
|
|
|
31
31
|
|
|
32
32
|
#  Panoramax
|
|
33
33
|
|
|
34
|
-
__Panoramax__ is a digital resource for sharing and
|
|
34
|
+
__Panoramax__ is a digital resource for sharing and using 📍📷 field photos. Anyone can take photographs of places visible from the public streets and contribute them to the Panoramax database. This data is then freely accessible and reusable by all. More information available at [gitlab.com/panoramax](https://gitlab.com/panoramax) and [panoramax.fr](https://panoramax.fr/).
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
# 📷 GeoPic Tag Reader
|
|
@@ -56,7 +56,7 @@ pip install geopic_tag_reader
|
|
|
56
56
|
geopic-tag-reader --help
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
To know more about install and other options, see [install documentation](./docs/
|
|
59
|
+
To know more about install and other options, see [install documentation](./docs/install.md).
|
|
60
60
|
|
|
61
61
|
If at some point you're lost or need help, you can contact us through [issues](https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/issues) or by [email](mailto:panieravide@riseup.net).
|
|
62
62
|
|
|
@@ -88,7 +88,7 @@ geopic-tag-reader write \
|
|
|
88
88
|
--output /path/to/edited_image.jpg
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
[Full documentation is also available here](./docs/
|
|
91
|
+
[Full documentation is also available here](./docs/index.md).
|
|
92
92
|
|
|
93
93
|
### As Python library
|
|
94
94
|
|
|
@@ -119,14 +119,14 @@ editedImg.write(editedImgBytes)
|
|
|
119
119
|
editedImg.close()
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
[Full documentation is also available here](./docs/
|
|
122
|
+
[Full documentation is also available here](./docs/tech/api_reference.md).
|
|
123
123
|
|
|
124
124
|
|
|
125
125
|
## Contributing
|
|
126
126
|
|
|
127
127
|
Pull requests are welcome. For major changes, please open an [issue](https://gitlab.com/panoramax/server/geo-picture-tag-reader/-/issues) first to discuss what you would like to change.
|
|
128
128
|
|
|
129
|
-
More information about developing is available in [documentation](./docs/
|
|
129
|
+
More information about developing is available in [documentation](./docs/develop.md).
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
## ⚖️ License
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
geopic_tag_reader/__init__.py,sha256=pmpiI8zEitwrzuj5eWxIJ1DHBOJz0c9TY6X_2QRTfLw,47
|
|
2
|
+
geopic_tag_reader/camera.py,sha256=Nw6dQjnrUCCOXujjk8Y7IwjJPMuDf4DAGCmHk0LDfEg,1975
|
|
3
|
+
geopic_tag_reader/i18n.py,sha256=LOLBj7eB_hpHTc5XdMP97EoWdD2kgmkP_uvJJDKEVsU,342
|
|
4
|
+
geopic_tag_reader/main.py,sha256=6Jf2VJCVAyAu-P3HltYMY7ZGXVziJrZguAnHU4bNA9I,3793
|
|
5
|
+
geopic_tag_reader/model.py,sha256=rsWVE3T1kpNsKXX8iv6xb_3PCVY6Ea7iU9WOqUgXklU,129
|
|
6
|
+
geopic_tag_reader/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
geopic_tag_reader/reader.py,sha256=q9W_iBa7r0d08HLfO4576lA6EvjXUQfiqbwkY6iqMqE,26746
|
|
8
|
+
geopic_tag_reader/sequence.py,sha256=5jQKnYDVQq4VDa09e8xTW9Gf-CvqsijEtx5OCSnvGMU,11180
|
|
9
|
+
geopic_tag_reader/writer.py,sha256=HdZenoY_5Qv1Kq0jedCJhVFDYsv0iQaCzB6necU_LrY,8793
|
|
10
|
+
geopic_tag_reader/translations/geopic_tag_reader.pot,sha256=ZeU-Z4eWyM0OLW7u2pcAwov5cyyW9J-wAvdLch292xw,3731
|
|
11
|
+
geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo,sha256=qxexGigWSIfEn4yIdtqQgd3w15oUc-SsHUScbCe6FDc,3924
|
|
12
|
+
geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po,sha256=QbzpTqoutNRGRMeUa7MZHXnfD92KVMVtxDt-3FUovfQ,5359
|
|
13
|
+
geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo,sha256=I7UwM4hYi-vNQn1TTXltfehveYsg1c7ZIxwORsbj_iM,3486
|
|
14
|
+
geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po,sha256=V1kZ5_vtxRJAejrbfJKzgAe2aCww9Hp-ybk_cPY_Myg,4970
|
|
15
|
+
geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.mo,sha256=pp2rm7hKmdBWStn-uLEwH5_yPMi3satuzU_H_EfLVoY,321
|
|
16
|
+
geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.po,sha256=O-22SB_bJlqYELYc-Cmf1MxoniW6PvE5nKA_Vkl2oC4,3563
|
|
17
|
+
geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.mo,sha256=X_KeDXDlO50JFKNCkh6TKjQcvuGH48CKbmKjK-o2cfU,321
|
|
18
|
+
geopic_tag_reader/translations/fi/LC_MESSAGES/geopic_tag_reader.po,sha256=2Gz8bcblT976JFPd0Q_FRq45__on0Fi1GIw6ocY-I64,3499
|
|
19
|
+
geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo,sha256=fyKou__ABeiq-bqXN_cL7zA1W2cZ6DUYhk5Tr83j2J4,4566
|
|
20
|
+
geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po,sha256=aJnB1wso7PFX70QYdVIgF77uTn-OaNZ3yYAqAJD5Gho,6213
|
|
21
|
+
geopic_tag_reader-1.3.0.dist-info/entry_points.txt,sha256=c9YwjCNhxveDf-61_aSRlzcpoutvM6KQCerlzaVt_JU,64
|
|
22
|
+
geopic_tag_reader-1.3.0.dist-info/LICENSE,sha256=oHWDwXkJJb9zJzThMN3F9Li4yFhz1qxOUByouY7L3bI,1070
|
|
23
|
+
geopic_tag_reader-1.3.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
24
|
+
geopic_tag_reader-1.3.0.dist-info/METADATA,sha256=nbRFltBwvQEsG0z0Ip3xbN4dSfSW1fnN1XjmiCwiIFU,4578
|
|
25
|
+
geopic_tag_reader-1.3.0.dist-info/RECORD,,
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
geopic_tag_reader/__init__.py,sha256=6PRUY4POmmWEzs46rNV709zW1_7O0CL9nq1l5HxGeAE,47
|
|
2
|
-
geopic_tag_reader/camera.py,sha256=Nw6dQjnrUCCOXujjk8Y7IwjJPMuDf4DAGCmHk0LDfEg,1975
|
|
3
|
-
geopic_tag_reader/i18n.py,sha256=LOLBj7eB_hpHTc5XdMP97EoWdD2kgmkP_uvJJDKEVsU,342
|
|
4
|
-
geopic_tag_reader/main.py,sha256=zagllZZBEqVLXzYfmNNKCtmaoQ8zm_nciscPZfEk9js,3589
|
|
5
|
-
geopic_tag_reader/model.py,sha256=rsWVE3T1kpNsKXX8iv6xb_3PCVY6Ea7iU9WOqUgXklU,129
|
|
6
|
-
geopic_tag_reader/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
geopic_tag_reader/reader.py,sha256=1VdI-Slw2Y1ynsZ_umXjKa38SrDEuUAcyHuPN6ZS40o,25160
|
|
8
|
-
geopic_tag_reader/sequence.py,sha256=yk3znpwJ8_8spbk4NS7cO1d7mnyAgKRTg0BQa-Jes0E,9203
|
|
9
|
-
geopic_tag_reader/writer.py,sha256=HdZenoY_5Qv1Kq0jedCJhVFDYsv0iQaCzB6necU_LrY,8793
|
|
10
|
-
geopic_tag_reader/translations/geopic_tag_reader.pot,sha256=JNAzpWxfPjOtsHyjt4CdmpRUTWt2nEeQeb0syTMQRKg,3526
|
|
11
|
-
geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.mo,sha256=8l9nz6T59zzk3p8J2KWY98wlCJGh3wcNxFX9-SylI38,3891
|
|
12
|
-
geopic_tag_reader/translations/de/LC_MESSAGES/geopic_tag_reader.po,sha256=IN4s_dd1KiWapkAUItw17d2hkVMxQvLZ-cjF0rRFI0M,5292
|
|
13
|
-
geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.mo,sha256=iid5n0NBCVgqfbQsZzlE3MJE_wRDIqJrZInVoF6XPzw,3368
|
|
14
|
-
geopic_tag_reader/translations/en/LC_MESSAGES/geopic_tag_reader.po,sha256=9QTlh5Uj3JTHcpTfWFcGunQrTBe0bslRWxWkL4rEZ7A,4745
|
|
15
|
-
geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.mo,sha256=pp2rm7hKmdBWStn-uLEwH5_yPMi3satuzU_H_EfLVoY,321
|
|
16
|
-
geopic_tag_reader/translations/es/LC_MESSAGES/geopic_tag_reader.po,sha256=O-22SB_bJlqYELYc-Cmf1MxoniW6PvE5nKA_Vkl2oC4,3563
|
|
17
|
-
geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.mo,sha256=QX_oy4YPYibj39MoJnLVJaj6a1TFEKh97P3bH3tXNxE,4511
|
|
18
|
-
geopic_tag_reader/translations/fr/LC_MESSAGES/geopic_tag_reader.po,sha256=VG_7k8g4o07IFYoUvSeMHQRYpswgVRV8eKp0ITf4DYU,6148
|
|
19
|
-
geopic_tag_reader-1.2.0.dist-info/entry_points.txt,sha256=c9YwjCNhxveDf-61_aSRlzcpoutvM6KQCerlzaVt_JU,64
|
|
20
|
-
geopic_tag_reader-1.2.0.dist-info/LICENSE,sha256=oHWDwXkJJb9zJzThMN3F9Li4yFhz1qxOUByouY7L3bI,1070
|
|
21
|
-
geopic_tag_reader-1.2.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
22
|
-
geopic_tag_reader-1.2.0.dist-info/METADATA,sha256=yp8r8o5k2cfFHKaAaNH4iXbFLpAQCOAoxRd4-4An0Qc,4578
|
|
23
|
-
geopic_tag_reader-1.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|