mapillary-tools 0.14.0a2__py3-none-any.whl → 0.14.1__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.
- mapillary_tools/__init__.py +1 -1
- mapillary_tools/api_v4.py +66 -262
- mapillary_tools/authenticate.py +54 -46
- mapillary_tools/blackvue_parser.py +79 -22
- mapillary_tools/commands/__main__.py +15 -16
- mapillary_tools/commands/upload.py +33 -4
- mapillary_tools/config.py +38 -17
- mapillary_tools/constants.py +127 -43
- mapillary_tools/exceptions.py +4 -0
- mapillary_tools/exif_read.py +2 -1
- mapillary_tools/exif_write.py +3 -1
- mapillary_tools/exiftool_read_video.py +52 -15
- mapillary_tools/exiftool_runner.py +4 -24
- mapillary_tools/ffmpeg.py +406 -232
- mapillary_tools/geo.py +16 -0
- mapillary_tools/geotag/__init__.py +0 -0
- mapillary_tools/geotag/base.py +8 -4
- mapillary_tools/geotag/factory.py +106 -89
- mapillary_tools/geotag/geotag_images_from_exiftool.py +27 -20
- mapillary_tools/geotag/geotag_images_from_gpx.py +7 -6
- mapillary_tools/geotag/geotag_images_from_video.py +35 -0
- mapillary_tools/geotag/geotag_videos_from_exiftool.py +61 -14
- mapillary_tools/geotag/geotag_videos_from_gpx.py +22 -9
- mapillary_tools/geotag/options.py +25 -3
- mapillary_tools/geotag/utils.py +9 -12
- mapillary_tools/geotag/video_extractors/base.py +1 -1
- mapillary_tools/geotag/video_extractors/exiftool.py +1 -1
- mapillary_tools/geotag/video_extractors/gpx.py +61 -70
- mapillary_tools/geotag/video_extractors/native.py +34 -31
- mapillary_tools/history.py +128 -8
- mapillary_tools/http.py +211 -0
- mapillary_tools/mp4/construct_mp4_parser.py +8 -2
- mapillary_tools/process_geotag_properties.py +47 -35
- mapillary_tools/process_sequence_properties.py +340 -325
- mapillary_tools/sample_video.py +8 -8
- mapillary_tools/serializer/description.py +587 -0
- mapillary_tools/serializer/gpx.py +132 -0
- mapillary_tools/types.py +44 -610
- mapillary_tools/upload.py +327 -352
- mapillary_tools/upload_api_v4.py +125 -72
- mapillary_tools/uploader.py +797 -216
- mapillary_tools/utils.py +57 -5
- {mapillary_tools-0.14.0a2.dist-info → mapillary_tools-0.14.1.dist-info}/METADATA +91 -34
- mapillary_tools-0.14.1.dist-info/RECORD +76 -0
- {mapillary_tools-0.14.0a2.dist-info → mapillary_tools-0.14.1.dist-info}/WHEEL +1 -1
- mapillary_tools-0.14.0a2.dist-info/RECORD +0 -72
- {mapillary_tools-0.14.0a2.dist-info → mapillary_tools-0.14.1.dist-info}/entry_points.txt +0 -0
- {mapillary_tools-0.14.0a2.dist-info → mapillary_tools-0.14.1.dist-info}/licenses/LICENSE +0 -0
- {mapillary_tools-0.14.0a2.dist-info → mapillary_tools-0.14.1.dist-info}/top_level.txt +0 -0
mapillary_tools/utils.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import concurrent.futures
|
|
4
|
+
|
|
3
5
|
import hashlib
|
|
6
|
+
import logging
|
|
4
7
|
import os
|
|
5
8
|
import typing as T
|
|
6
|
-
from multiprocessing import Pool
|
|
7
9
|
from pathlib import Path
|
|
8
10
|
|
|
9
11
|
|
|
@@ -197,6 +199,13 @@ def get_file_size(path: Path) -> int:
|
|
|
197
199
|
return os.path.getsize(path)
|
|
198
200
|
|
|
199
201
|
|
|
202
|
+
def get_file_size_quietly(path: Path) -> int:
|
|
203
|
+
try:
|
|
204
|
+
return get_file_size(path)
|
|
205
|
+
except Exception:
|
|
206
|
+
return 0
|
|
207
|
+
|
|
208
|
+
|
|
200
209
|
TMapIn = T.TypeVar("TMapIn")
|
|
201
210
|
TMapOut = T.TypeVar("TMapOut")
|
|
202
211
|
|
|
@@ -207,14 +216,57 @@ def mp_map_maybe(
|
|
|
207
216
|
num_processes: int | None = None,
|
|
208
217
|
) -> T.Generator[TMapOut, None, None]:
|
|
209
218
|
if num_processes is None:
|
|
210
|
-
|
|
219
|
+
max_workers = None
|
|
211
220
|
disable_multiprocessing = False
|
|
212
221
|
else:
|
|
213
|
-
|
|
222
|
+
max_workers = max(num_processes, 1)
|
|
214
223
|
disable_multiprocessing = num_processes <= 0
|
|
215
224
|
|
|
216
225
|
if disable_multiprocessing:
|
|
217
226
|
yield from map(func, iterable)
|
|
218
227
|
else:
|
|
219
|
-
|
|
220
|
-
|
|
228
|
+
app_logger = logging.getLogger(get_app_name())
|
|
229
|
+
with concurrent.futures.ProcessPoolExecutor(
|
|
230
|
+
max_workers=max_workers,
|
|
231
|
+
initializer=configure_logger,
|
|
232
|
+
initargs=(None, app_logger.getEffectiveLevel()),
|
|
233
|
+
) as executor:
|
|
234
|
+
yield from executor.map(func, iterable)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def configure_logger(
|
|
238
|
+
logger: logging.Logger | None = None, level: int = logging.INFO
|
|
239
|
+
) -> logging.Logger:
|
|
240
|
+
"""Configure logging in each worker process"""
|
|
241
|
+
if logger is None:
|
|
242
|
+
# Root logger if app name is ""
|
|
243
|
+
logger = logging.getLogger(get_app_name())
|
|
244
|
+
|
|
245
|
+
logger.setLevel(level)
|
|
246
|
+
|
|
247
|
+
try:
|
|
248
|
+
# Disable globally for now. TODO Disable it in non-interactive mode only
|
|
249
|
+
raise ImportError
|
|
250
|
+
from rich.console import Console # type: ignore
|
|
251
|
+
from rich.logging import RichHandler # type: ignore
|
|
252
|
+
except ImportError:
|
|
253
|
+
formatter = logging.Formatter(
|
|
254
|
+
"%(asctime)s.%(msecs)03d - %(levelname)-7s - %(message)s",
|
|
255
|
+
datefmt="%H:%M:%S",
|
|
256
|
+
)
|
|
257
|
+
handler: logging.Handler = logging.StreamHandler()
|
|
258
|
+
handler.setFormatter(formatter)
|
|
259
|
+
else:
|
|
260
|
+
handler = RichHandler(console=Console(stderr=True), rich_tracebacks=True) # type: ignore
|
|
261
|
+
|
|
262
|
+
logger.addHandler(handler)
|
|
263
|
+
|
|
264
|
+
return logger
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def get_app_name() -> str:
|
|
268
|
+
if __name__:
|
|
269
|
+
return __name__.split(".")[0]
|
|
270
|
+
else:
|
|
271
|
+
# Rare case
|
|
272
|
+
return ""
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapillary_tools
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: Mapillary Image/Video Import Pipeline
|
|
5
|
-
|
|
6
|
-
Author: Mapillary
|
|
5
|
+
Author-email: Mapillary <support@mapillary.com>
|
|
7
6
|
License: BSD
|
|
8
|
-
|
|
7
|
+
Project-URL: Homepage, https://github.com/mapillary/mapillary_tools
|
|
8
|
+
Project-URL: Repository, https://github.com/mapillary/mapillary_tools
|
|
9
|
+
Project-URL: Issues, https://github.com/mapillary/mapillary_tools/issues
|
|
10
|
+
Keywords: mapillary,gis,computer vision,street view
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
14
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Requires-Python: >=3.9
|
|
9
22
|
Description-Content-Type: text/markdown
|
|
10
23
|
License-File: LICENSE
|
|
11
24
|
Requires-Dist: appdirs<2.0.0,>=1.4.4
|
|
12
|
-
Requires-Dist: construct
|
|
13
|
-
Requires-Dist: exifread
|
|
14
|
-
Requires-Dist:
|
|
15
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: construct~=2.10.0
|
|
26
|
+
Requires-Dist: exifread~=3.0
|
|
27
|
+
Requires-Dist: gpxpy~=1.6.0
|
|
28
|
+
Requires-Dist: humanize>=4.12.3
|
|
29
|
+
Requires-Dist: jsonschema~=4.17.0
|
|
30
|
+
Requires-Dist: piexif~=1.1
|
|
16
31
|
Requires-Dist: pynmea2<2.0.0,>=1.12.0
|
|
17
32
|
Requires-Dist: requests[socks]<3.0.0,>=2.20.0
|
|
18
33
|
Requires-Dist: tqdm<5.0,>=4.0
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist: jsonschema~=4.17.3
|
|
21
|
-
Dynamic: author
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic: description-content-type
|
|
24
|
-
Dynamic: home-page
|
|
25
|
-
Dynamic: license
|
|
34
|
+
Requires-Dist: typing-extensions>=4.12.2
|
|
26
35
|
Dynamic: license-file
|
|
27
|
-
Dynamic: requires-dist
|
|
28
|
-
Dynamic: requires-python
|
|
29
|
-
Dynamic: summary
|
|
30
36
|
|
|
31
37
|
<p align="center">
|
|
32
38
|
<a href="https://github.com/mapillary/mapillary_tools/">
|
|
@@ -58,18 +64,40 @@ mapillary_tools --help
|
|
|
58
64
|
<!--ts-->
|
|
59
65
|
|
|
60
66
|
- [Supported File Formats](#supported-file-formats)
|
|
67
|
+
- [Image Formats](#image-formats)
|
|
68
|
+
- [Video Formats](#video-formats)
|
|
61
69
|
- [Installation](#installation)
|
|
70
|
+
- [Standalone Executable](#standalone-executable)
|
|
71
|
+
- [Installing via pip](#installing-via-pip)
|
|
72
|
+
- [Installing on Android Devices](#installing-on-android-devices)
|
|
62
73
|
- [Usage](#usage)
|
|
63
74
|
- [Process and Upload](#process-and-upload)
|
|
64
75
|
- [Process](#process)
|
|
65
76
|
- [Upload](#upload)
|
|
66
77
|
- [Advanced Usage](#advanced-usage)
|
|
67
78
|
- [Local Video Processing](#local-video-processing)
|
|
79
|
+
- [Install FFmpeg](#install-ffmpeg)
|
|
80
|
+
- [Video Processing](#video-processing)
|
|
68
81
|
- [Geotagging with GPX](#geotagging-with-gpx)
|
|
82
|
+
- [New video geotagging features (experimental)](#new-video-geotagging-features-experimental)
|
|
83
|
+
- [Usage](#usage-1)
|
|
84
|
+
- [Examples](#examples)
|
|
85
|
+
- [Generic supported videos](#generic-supported-videos)
|
|
86
|
+
- [External GPX](#external-gpx)
|
|
87
|
+
- [Insta360 stitched videos](#insta360-stitched-videos)
|
|
88
|
+
- [Limitations of `--video_geotag_source`](#limitations-of---video_geotag_source)
|
|
69
89
|
- [Authenticate](#authenticate)
|
|
90
|
+
- [Examples](#examples-1)
|
|
70
91
|
- [Image Description](#image-description)
|
|
71
92
|
- [Zip Images](#zip-images)
|
|
72
93
|
- [Development](#development)
|
|
94
|
+
- [Setup](#setup)
|
|
95
|
+
- [Option 1: Using uv (Recommended)](#option-1-using-uv-recommended)
|
|
96
|
+
- [Option 2: Using pip with virtual environment](#option-2-using-pip-with-virtual-environment)
|
|
97
|
+
- [Running the code](#running-the-code)
|
|
98
|
+
- [Tests](#tests)
|
|
99
|
+
- [Code Quality](#code-quality)
|
|
100
|
+
- [Release and Build](#release-and-build)
|
|
73
101
|
|
|
74
102
|
<!--te-->
|
|
75
103
|
|
|
@@ -495,29 +523,49 @@ git clone git@github.com:mapillary/mapillary_tools.git
|
|
|
495
523
|
cd mapillary_tools
|
|
496
524
|
```
|
|
497
525
|
|
|
498
|
-
|
|
526
|
+
### Option 1: Using uv (Recommended)
|
|
527
|
+
|
|
528
|
+
Use [uv](https://docs.astral.sh/uv/) - a fast Python package manager.
|
|
529
|
+
|
|
530
|
+
Install the project in development mode with all dependencies:
|
|
499
531
|
|
|
500
532
|
```sh
|
|
501
|
-
|
|
533
|
+
# Install the project and development dependencies
|
|
534
|
+
uv sync --group dev
|
|
535
|
+
|
|
536
|
+
# Activate the virtual environment
|
|
537
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
502
538
|
```
|
|
503
539
|
|
|
504
|
-
|
|
540
|
+
### Option 2: Using pip with virtual environment
|
|
541
|
+
|
|
542
|
+
Set up a virtual environment (recommended):
|
|
505
543
|
|
|
506
544
|
```sh
|
|
507
|
-
|
|
508
|
-
|
|
545
|
+
python -m venv .venv
|
|
546
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
509
547
|
```
|
|
510
548
|
|
|
511
|
-
|
|
549
|
+
Install the project in development mode:
|
|
512
550
|
|
|
513
551
|
```sh
|
|
514
|
-
|
|
552
|
+
# Install the project and all dependencies in editable mode
|
|
553
|
+
pip install -e .
|
|
554
|
+
|
|
555
|
+
# Install development dependencies
|
|
556
|
+
pip install --group dev
|
|
515
557
|
```
|
|
516
558
|
|
|
559
|
+
## Running the code
|
|
560
|
+
|
|
517
561
|
Run the code from the repository:
|
|
518
562
|
|
|
519
563
|
```sh
|
|
520
|
-
|
|
564
|
+
# If you have mapillary_tools installed in editable mode
|
|
565
|
+
mapillary_tools --version
|
|
566
|
+
|
|
567
|
+
# Alternatively
|
|
568
|
+
python -m mapillary_tools.commands --version
|
|
521
569
|
```
|
|
522
570
|
|
|
523
571
|
## Tests
|
|
@@ -525,19 +573,28 @@ python3 -m mapillary_tools.commands --version
|
|
|
525
573
|
Run tests:
|
|
526
574
|
|
|
527
575
|
```sh
|
|
528
|
-
#
|
|
529
|
-
|
|
530
|
-
#
|
|
531
|
-
|
|
576
|
+
# Test all cases
|
|
577
|
+
pytest -s -vv tests
|
|
578
|
+
# Or test a single case specifically
|
|
579
|
+
pytest -s -vv tests/unit/test_camm_parser.py::test_build_and_parse
|
|
532
580
|
```
|
|
533
581
|
|
|
534
|
-
|
|
582
|
+
## Code Quality
|
|
583
|
+
|
|
584
|
+
Run code formatting and linting:
|
|
535
585
|
|
|
536
586
|
```sh
|
|
537
|
-
#
|
|
538
|
-
|
|
539
|
-
|
|
587
|
+
# Format code with ruff
|
|
588
|
+
ruff format mapillary_tools tests
|
|
589
|
+
|
|
590
|
+
# Lint code with ruff
|
|
591
|
+
ruff check mapillary_tools tests
|
|
592
|
+
|
|
593
|
+
# Sort imports with usort
|
|
540
594
|
usort format mapillary_tools tests
|
|
595
|
+
|
|
596
|
+
# Type checking with mypy
|
|
597
|
+
mypy mapillary_tools
|
|
541
598
|
```
|
|
542
599
|
|
|
543
600
|
## Release and Build
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
mapillary_tools/__init__.py,sha256=91RNgd9bTuNlioixZy3CssJc8LG26WWwcNDinmjqx20,19
|
|
2
|
+
mapillary_tools/api_v4.py,sha256=bckAU_atUs0pSuqySeY4W0Rs011a21ClJHo_mbbcXXw,4864
|
|
3
|
+
mapillary_tools/authenticate.py,sha256=JXmoTPcAyv9difceKIupXz7vyuLcNZ_AnxLrUVdtPPs,11745
|
|
4
|
+
mapillary_tools/blackvue_parser.py,sha256=ea2JtU9MWU6yB0bQlF970_Of0bJVofSTRq1P30WKW-0,5623
|
|
5
|
+
mapillary_tools/config.py,sha256=97zsyPnZXGincEkM__c6UNWH25EMTtRKZGsp6vBpHy8,3326
|
|
6
|
+
mapillary_tools/constants.py,sha256=fk5HBczTBGyDOKQy-grzlf0SafiGwggdF8Ota13Rk0k,6235
|
|
7
|
+
mapillary_tools/exceptions.py,sha256=uxTgBEfXgGxT0XNGRIAZ5mjtdqsCYfP6gnaXAK_ewBM,2483
|
|
8
|
+
mapillary_tools/exif_read.py,sha256=nAbZDYAIBx3g4n6QIGKXX3s-A3SkfuvZQBInDrXMlKk,32220
|
|
9
|
+
mapillary_tools/exif_write.py,sha256=I9GSs8KRd28QyKPVNHuxesSVbBvahHqKBS3nw9HoLsg,8830
|
|
10
|
+
mapillary_tools/exiftool_read.py,sha256=5uatYE9mgbg2d9NAnPfX22nSRBjXhJ9ayMqNMd4QwGM,15779
|
|
11
|
+
mapillary_tools/exiftool_read_video.py,sha256=23O_bjUOVq6j7i3xMz6fY-XIEsjinsCejK_0nrbFyOM,16084
|
|
12
|
+
mapillary_tools/exiftool_runner.py,sha256=g4gSyqeh3D6EnMJ-c3s-RnO2EP_jD354Qkaz0Y-4D04,1658
|
|
13
|
+
mapillary_tools/ffmpeg.py,sha256=akpvvsjAR-Iiv-hOrUoJvPM9vUU3JqMQ5HJL1_NgwB8,22908
|
|
14
|
+
mapillary_tools/geo.py,sha256=mWaESfDf_zHmyvnt5aVFro4FGrjiULNsuZ6HfGUWvSA,11009
|
|
15
|
+
mapillary_tools/history.py,sha256=LP6e0zEYVBwRGUbFaGoE_AaBIEdpB4XrZsg9qwJVvRI,5344
|
|
16
|
+
mapillary_tools/http.py,sha256=-df_oGyImO2AOmPnXcKMcztlL4LOZLArE6ki81NMGUA,6411
|
|
17
|
+
mapillary_tools/ipc.py,sha256=DwWQb9hNshx0bg0Fo5NjY0mXjs-FkbR6tIQmjMgMtmg,1089
|
|
18
|
+
mapillary_tools/process_geotag_properties.py,sha256=lF2Po83BAGWlLTtS5AFf6MLLTm-kiImD8SW-tWIbyZ0,14419
|
|
19
|
+
mapillary_tools/process_sequence_properties.py,sha256=n4VjQHrgVjksIr3WoBviRhrQIBBDHGXMClolfyz6tu4,24057
|
|
20
|
+
mapillary_tools/sample_video.py,sha256=pKSj1Vc8e5p1XGjykBuKY9XieTOskc-9L3F4L407jDM,13935
|
|
21
|
+
mapillary_tools/telemetry.py,sha256=lL6qQbtOZft4DZZrCNK3njlwHT_30zLyYS_YRN5pgHY,1568
|
|
22
|
+
mapillary_tools/types.py,sha256=pIU2wcxiOUWT5Pd05pgNzY9EVEDlwoldtlF2IIYYvE0,5909
|
|
23
|
+
mapillary_tools/upload.py,sha256=yLunE66mZqTOiefN47KwO6auuyL5augbODyf5EafKeA,24084
|
|
24
|
+
mapillary_tools/upload_api_v4.py,sha256=VgOf7RhfUuzmlSBUp5CpekKIJ0xQrC0r-r0Ds9-wU4I,7344
|
|
25
|
+
mapillary_tools/uploader.py,sha256=gsXMyNriaFPFzCmtw9wpFSh6tDe4nrYe1agzwiVVehE,39484
|
|
26
|
+
mapillary_tools/utils.py,sha256=cP9idKt4EJqfC0qqOGneSoPNpPiYhaW8VjQ9CLYjESc,8092
|
|
27
|
+
mapillary_tools/camm/camm_builder.py,sha256=ub6Z9ijep8zAo1NOlU51Gxk95kQ2vfN58YgVCLmNMRk,9211
|
|
28
|
+
mapillary_tools/camm/camm_parser.py,sha256=aNHP65hNXYQBWBTfhaj_S5XYzmAHhjwcAfGhbm83__o,18043
|
|
29
|
+
mapillary_tools/commands/__init__.py,sha256=41CFrPLGlG3566uhxssEF3TGAtSpADFPPcDMHbViU0E,171
|
|
30
|
+
mapillary_tools/commands/__main__.py,sha256=W4jMlCA1jekytKA9MMn3mhKie2jgRhc00ylOY2lCxiw,4835
|
|
31
|
+
mapillary_tools/commands/authenticate.py,sha256=yqtpHMYzkyBrrchj6MARxB0ywUTfqCEOPkMbkyaO9Ks,1344
|
|
32
|
+
mapillary_tools/commands/process.py,sha256=Japc6_P0B_8HzoM8_82P3_YAiyBBaQZXS9TZF46pbMM,9771
|
|
33
|
+
mapillary_tools/commands/process_and_upload.py,sha256=-RB_86a5xKfQ7Ye79dh6yyJQpZg2xnJZAWOJsUNbUtQ,1041
|
|
34
|
+
mapillary_tools/commands/sample_video.py,sha256=jtnrZrsqqv5eYV1chNTas7RhfbeKBqbAUDUNRFjF01w,3253
|
|
35
|
+
mapillary_tools/commands/upload.py,sha256=Z06YJ_mZKiBQ1zLojGf6I5t1X4YBcK19sHD-9C0gdXM,3100
|
|
36
|
+
mapillary_tools/commands/video_process.py,sha256=-wQeeIwWXPmy81HQHam5A0huMLRHknkEFa_V1OwElU4,890
|
|
37
|
+
mapillary_tools/commands/video_process_and_upload.py,sha256=hOyq9L9TuD0JcqFSOOxdCdgsBA1iJ6fu1TtDbsUr8sI,1088
|
|
38
|
+
mapillary_tools/commands/zip.py,sha256=DVQuMLpbstwiy5o4pU_fBvM6eORuFjLeySd80AhHKU0,991
|
|
39
|
+
mapillary_tools/geotag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
mapillary_tools/geotag/base.py,sha256=GVKorhJcTivvakcUfPzR6KMzRoIK1pxknDlLDqY2XUk,5166
|
|
41
|
+
mapillary_tools/geotag/factory.py,sha256=6CNQRTr9HTmOA65Iz09CVlGJCGdzOeS0sx5QZO_DXPY,10271
|
|
42
|
+
mapillary_tools/geotag/geotag_images_from_exif.py,sha256=a5fDOp4tlEoVNwrOCJBrvSPzu1LbyxL4RNrNDD0tPP0,608
|
|
43
|
+
mapillary_tools/geotag/geotag_images_from_exiftool.py,sha256=T_IOWgvieqCpfDUdma7K3qmAilme-wdjYrD4lSOdAM4,5707
|
|
44
|
+
mapillary_tools/geotag/geotag_images_from_gpx.py,sha256=EyhJjpP1L_DPRCX926aKeTvuxFxD-eWVCWgELp0-pzY,6313
|
|
45
|
+
mapillary_tools/geotag/geotag_images_from_gpx_file.py,sha256=HYQkwak32YBDuRrTNiIZOmE3iImCRc22HWWb485WRS4,1121
|
|
46
|
+
mapillary_tools/geotag/geotag_images_from_nmea_file.py,sha256=J8xj6ch9bMPRubJtsRGeb3sb9LyB0ZYy65NPEOVkUe8,1597
|
|
47
|
+
mapillary_tools/geotag/geotag_images_from_video.py,sha256=3NV3-NfSkxT0n_n8Ajqjab24x29H2vL98DpwJqnIvT8,4411
|
|
48
|
+
mapillary_tools/geotag/geotag_videos_from_exiftool.py,sha256=Splhtv21JvrbFPVuKycf5wen0wOJ0zqOWk8d4aSw-ys,5345
|
|
49
|
+
mapillary_tools/geotag/geotag_videos_from_gpx.py,sha256=IoV7asxl7dojF1lftvohm1jK_LboFg_mBz25GiV_CsY,1653
|
|
50
|
+
mapillary_tools/geotag/geotag_videos_from_video.py,sha256=T8XS4lVF2Wz4eDXNi5Vt076M5dxjxJXibVrWhqVvErs,863
|
|
51
|
+
mapillary_tools/geotag/options.py,sha256=0CSQUuhVE-WdAVQXWXjwMtxujW1yB6yxRkFmVKH8LkQ,5092
|
|
52
|
+
mapillary_tools/geotag/utils.py,sha256=tixXiN3uda2HuMnuXVu4xapgoSzZ86kNlJJQ66QERk0,1588
|
|
53
|
+
mapillary_tools/geotag/image_extractors/base.py,sha256=XoNrLCbJtd-MN-snbhv6zyr6zBfJRoJkntV0ptrh6qg,358
|
|
54
|
+
mapillary_tools/geotag/image_extractors/exif.py,sha256=cCUegbFqWxjAP4oOP1nZmwoJISWeKgjGO8h_t7nucHs,2079
|
|
55
|
+
mapillary_tools/geotag/image_extractors/exiftool.py,sha256=zokJmf-D2rPvASRJs3dZzEu7j82igpMOr4SE6Z1nsVg,497
|
|
56
|
+
mapillary_tools/geotag/video_extractors/base.py,sha256=KxyKxoh_mV-XBnJq3dSzNEt2rQqZAKjmS3GazsdYbnc,350
|
|
57
|
+
mapillary_tools/geotag/video_extractors/exiftool.py,sha256=mH9arsWBaArYhNMxnrRpoEa3YrMjSpCiZaz-baJRMCo,2305
|
|
58
|
+
mapillary_tools/geotag/video_extractors/gpx.py,sha256=1JDuGLgp3wpaAqfq3ln4DMsVt820dK5HZ3VfJnok98c,3823
|
|
59
|
+
mapillary_tools/geotag/video_extractors/native.py,sha256=_xmTQ6nrvdwkadMmIxrhw6rvGTGwQVmrdSkYLhhV1SM,5786
|
|
60
|
+
mapillary_tools/gpmf/gpmf_gps_filter.py,sha256=7cg8wEjC1DrujKY76FZguXsaPqTRkG9-t32OeuOJQIc,2755
|
|
61
|
+
mapillary_tools/gpmf/gpmf_parser.py,sha256=uOVXkwJxC3Y2YfTdzUDpt7Bh0pdVqa5u0WUuv7pEJEs,24670
|
|
62
|
+
mapillary_tools/gpmf/gps_filter.py,sha256=zhXkuvr0Dd1bxGTYBwvk6P7xasY_RLuWjHaX7CdBayc,3796
|
|
63
|
+
mapillary_tools/mp4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
+
mapillary_tools/mp4/construct_mp4_parser.py,sha256=jS8fOgSByqieXA6C5ZqobaI0bK17U_YAkiWEUK_8j4E,17286
|
|
65
|
+
mapillary_tools/mp4/io_utils.py,sha256=KZaJTlgFS27Oh3pcA5MKXYFoCifqgFaEZJyU6lb1jc4,5416
|
|
66
|
+
mapillary_tools/mp4/mp4_sample_parser.py,sha256=0ILTq8M6mXFTI3agKgljpvO9uYa7HXGUGZpdHT8a6ac,11547
|
|
67
|
+
mapillary_tools/mp4/simple_mp4_builder.py,sha256=9TUGk1hzI6mQFN1P30jwHL3dCYz3Zz7rsm8UBvMAqMc,12734
|
|
68
|
+
mapillary_tools/mp4/simple_mp4_parser.py,sha256=g3vvPhBoNu7anhVzC5_XQCV7IwfRWro1vJ6d6GyDkHE,6315
|
|
69
|
+
mapillary_tools/serializer/description.py,sha256=FB-DawgHVW5M2e81Uo921bY7DQv9fogXF3QMilpmEhQ,18473
|
|
70
|
+
mapillary_tools/serializer/gpx.py,sha256=_xx6gHjaWHrlXaUpB5GGBrbRKzbExFyIzWWAH-CvksI,4383
|
|
71
|
+
mapillary_tools-0.14.1.dist-info/licenses/LICENSE,sha256=l2D8cKfFmmJq_wcVq_JElPJrlvWQOzNWx7gMLINucxc,1292
|
|
72
|
+
mapillary_tools-0.14.1.dist-info/METADATA,sha256=NmnszTprFtSwwR7VYc2kwUl3SYOiE9ClmQ5TWMPyA80,22200
|
|
73
|
+
mapillary_tools-0.14.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
74
|
+
mapillary_tools-0.14.1.dist-info/entry_points.txt,sha256=A3f3LP-BO_P-U8Y29QfpT4jx6Mjk3sXjTi2Yew4bvj8,75
|
|
75
|
+
mapillary_tools-0.14.1.dist-info/top_level.txt,sha256=FbDkMgOrt1S70ho1WSBrOwzKOSkJFDwwqFOoY5-527s,16
|
|
76
|
+
mapillary_tools-0.14.1.dist-info/RECORD,,
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
mapillary_tools/__init__.py,sha256=AdfWnUWJogoEJm_EqofQxlG8NYL78h0B0M3Igr2xQpE,21
|
|
2
|
-
mapillary_tools/api_v4.py,sha256=uvz48tb2HaM1wfomaUR0V2HdId39HoxnQAc1WWgptvo,10091
|
|
3
|
-
mapillary_tools/authenticate.py,sha256=KG3p_7D4D7nUvrGRLGp56_ogLy7JUHzkGSpBw8V70LY,11091
|
|
4
|
-
mapillary_tools/blackvue_parser.py,sha256=Gmz3M1cvBmB2W3Pme6x3w2yuixDpKiTOkQe82iPXr2s,3613
|
|
5
|
-
mapillary_tools/config.py,sha256=uoNW5PnB1a2TW959KmNSYgJ1Y4_trn0xxPHJQ6T-cbI,2633
|
|
6
|
-
mapillary_tools/constants.py,sha256=BVnAlqz2XJfodNXsJfsGIV0L4P_3--oOgw1pR38D-Ls,3770
|
|
7
|
-
mapillary_tools/exceptions.py,sha256=P8vEh3pfOqyzJgOiQiRAcWsZTrcawjic7i4v3k335tM,2411
|
|
8
|
-
mapillary_tools/exif_read.py,sha256=gagyRv06RkZPRHQhyV-5-uQzxHgxOsVqUX2aC8QmCyM,32145
|
|
9
|
-
mapillary_tools/exif_write.py,sha256=Ue0ngLKCfuLQM7X4h5ETjSInUDcyEBWOR6v8ko7DJ1o,8769
|
|
10
|
-
mapillary_tools/exiftool_read.py,sha256=5uatYE9mgbg2d9NAnPfX22nSRBjXhJ9ayMqNMd4QwGM,15779
|
|
11
|
-
mapillary_tools/exiftool_read_video.py,sha256=WXpw7CI7B4daJHRWzzVXAyVgDrFN8nPxQ3UPcVQqRJM,14760
|
|
12
|
-
mapillary_tools/exiftool_runner.py,sha256=J04V0Y70kTiGE2q2m5TKWfORd0hmYNmAsmrZxb34S3s,2316
|
|
13
|
-
mapillary_tools/ffmpeg.py,sha256=tRgdChGHAhHXjZPivDuVImubrJWfSDZDBZ7mSzkeABc,15698
|
|
14
|
-
mapillary_tools/geo.py,sha256=MSfkjSAgTAeuBqncQ8-QXvDuJ7ar7bTt5P_e9HDIgVs,10604
|
|
15
|
-
mapillary_tools/history.py,sha256=8ng2WHXadzbE5gnsoik6gbmRoEXTuGPp997RBiiWy08,1649
|
|
16
|
-
mapillary_tools/ipc.py,sha256=DwWQb9hNshx0bg0Fo5NjY0mXjs-FkbR6tIQmjMgMtmg,1089
|
|
17
|
-
mapillary_tools/process_geotag_properties.py,sha256=f0Up7yNzgLn32VBFMzoMT6SCsdzFUFYmloOsVHmK5k0,13920
|
|
18
|
-
mapillary_tools/process_sequence_properties.py,sha256=LSYyCH1nmEcYWWZKF1bOYh4hqjwXdz4FY9TqQQfW7AU,23418
|
|
19
|
-
mapillary_tools/sample_video.py,sha256=MwTr2bY5RFnOFThNPg3YiyXCXzWOlTXKq7EOri_W3Vw,13880
|
|
20
|
-
mapillary_tools/telemetry.py,sha256=lL6qQbtOZft4DZZrCNK3njlwHT_30zLyYS_YRN5pgHY,1568
|
|
21
|
-
mapillary_tools/types.py,sha256=0O4fzbwwoT6Znp2Ag1ptjzBKGb3E_RhGyqUUZu6gkPY,23078
|
|
22
|
-
mapillary_tools/upload.py,sha256=exQeEh3jpys94k-3QDT-4xoeJ_lAHbQBoy749hbPfnA,24878
|
|
23
|
-
mapillary_tools/upload_api_v4.py,sha256=dTEpQDnV11TyPf5hefd-FVeEfw7WEVYyZcIUJttUEp0,6417
|
|
24
|
-
mapillary_tools/uploader.py,sha256=xPEszuXlgcgCklGfsgL8qN1ozsFuU4rLT4jocMD2dVI,18694
|
|
25
|
-
mapillary_tools/utils.py,sha256=ft-TrqgwWq1a-HpQqnCWIortZbjjTOywllPi8HBA3FU,6642
|
|
26
|
-
mapillary_tools/camm/camm_builder.py,sha256=ub6Z9ijep8zAo1NOlU51Gxk95kQ2vfN58YgVCLmNMRk,9211
|
|
27
|
-
mapillary_tools/camm/camm_parser.py,sha256=aNHP65hNXYQBWBTfhaj_S5XYzmAHhjwcAfGhbm83__o,18043
|
|
28
|
-
mapillary_tools/commands/__init__.py,sha256=41CFrPLGlG3566uhxssEF3TGAtSpADFPPcDMHbViU0E,171
|
|
29
|
-
mapillary_tools/commands/__main__.py,sha256=5gwngScbvrSNF2S1CA5w_qZgxW_kFevu5NQ89U9u1ZE,5046
|
|
30
|
-
mapillary_tools/commands/authenticate.py,sha256=yqtpHMYzkyBrrchj6MARxB0ywUTfqCEOPkMbkyaO9Ks,1344
|
|
31
|
-
mapillary_tools/commands/process.py,sha256=Japc6_P0B_8HzoM8_82P3_YAiyBBaQZXS9TZF46pbMM,9771
|
|
32
|
-
mapillary_tools/commands/process_and_upload.py,sha256=-RB_86a5xKfQ7Ye79dh6yyJQpZg2xnJZAWOJsUNbUtQ,1041
|
|
33
|
-
mapillary_tools/commands/sample_video.py,sha256=jtnrZrsqqv5eYV1chNTas7RhfbeKBqbAUDUNRFjF01w,3253
|
|
34
|
-
mapillary_tools/commands/upload.py,sha256=YnA1iSvNcFeV7kMs1p4TdaPBUWUFYb7X-vFhQeSz0eI,2005
|
|
35
|
-
mapillary_tools/commands/video_process.py,sha256=-wQeeIwWXPmy81HQHam5A0huMLRHknkEFa_V1OwElU4,890
|
|
36
|
-
mapillary_tools/commands/video_process_and_upload.py,sha256=hOyq9L9TuD0JcqFSOOxdCdgsBA1iJ6fu1TtDbsUr8sI,1088
|
|
37
|
-
mapillary_tools/commands/zip.py,sha256=DVQuMLpbstwiy5o4pU_fBvM6eORuFjLeySd80AhHKU0,991
|
|
38
|
-
mapillary_tools/geotag/base.py,sha256=JdLBXHlC22gqmZkyfAykv1osrzitWoCK8RFHdCd5qlc,4864
|
|
39
|
-
mapillary_tools/geotag/factory.py,sha256=2HIOnUtfxsgWn2GF0PbbgHq3Tzyssrl4T39YDMtN42U,9564
|
|
40
|
-
mapillary_tools/geotag/geotag_images_from_exif.py,sha256=a5fDOp4tlEoVNwrOCJBrvSPzu1LbyxL4RNrNDD0tPP0,608
|
|
41
|
-
mapillary_tools/geotag/geotag_images_from_exiftool.py,sha256=YxMFwv3A35Hh9tcGX1B1Si_m6TNep54SL5XFAQadQh0,5302
|
|
42
|
-
mapillary_tools/geotag/geotag_images_from_gpx.py,sha256=b_4xKVUt0HLIjNN-v7ZVddXDZ9cdxAfecB5Dj2X6XQE,6353
|
|
43
|
-
mapillary_tools/geotag/geotag_images_from_gpx_file.py,sha256=HYQkwak32YBDuRrTNiIZOmE3iImCRc22HWWb485WRS4,1121
|
|
44
|
-
mapillary_tools/geotag/geotag_images_from_nmea_file.py,sha256=J8xj6ch9bMPRubJtsRGeb3sb9LyB0ZYy65NPEOVkUe8,1597
|
|
45
|
-
mapillary_tools/geotag/geotag_images_from_video.py,sha256=5_qVgLt_DKl7oQrr9kWxi4iM143_HPAx5Lau-3fB7t4,3136
|
|
46
|
-
mapillary_tools/geotag/geotag_videos_from_exiftool.py,sha256=7chO_tb7ECsBlOkFhiXQ4fhomVPkfBOWtdfzXGpsJes,3168
|
|
47
|
-
mapillary_tools/geotag/geotag_videos_from_gpx.py,sha256=k4a1imUVLg2yDqggCwTSqjvY7jXQd3E-vniBuJj2d4M,1017
|
|
48
|
-
mapillary_tools/geotag/geotag_videos_from_video.py,sha256=T8XS4lVF2Wz4eDXNi5Vt076M5dxjxJXibVrWhqVvErs,863
|
|
49
|
-
mapillary_tools/geotag/options.py,sha256=7Fz0QoCMyZZbhkKvY4HPNWYfnKdQSWE2oRXb7jYZhmA,4336
|
|
50
|
-
mapillary_tools/geotag/utils.py,sha256=0DenLVCLP-GZdk0rCFP0V1tjMGK4XAvYro3I_1RKgCA,1733
|
|
51
|
-
mapillary_tools/geotag/image_extractors/base.py,sha256=XoNrLCbJtd-MN-snbhv6zyr6zBfJRoJkntV0ptrh6qg,358
|
|
52
|
-
mapillary_tools/geotag/image_extractors/exif.py,sha256=cCUegbFqWxjAP4oOP1nZmwoJISWeKgjGO8h_t7nucHs,2079
|
|
53
|
-
mapillary_tools/geotag/image_extractors/exiftool.py,sha256=zokJmf-D2rPvASRJs3dZzEu7j82igpMOr4SE6Z1nsVg,497
|
|
54
|
-
mapillary_tools/geotag/video_extractors/base.py,sha256=_3B37T-m2HGy77avAF8i_kEatIyQqFfBu49qVnx_0PU,357
|
|
55
|
-
mapillary_tools/geotag/video_extractors/exiftool.py,sha256=CB49qZqgmxECma-N5757aEn37xXRbCNRcT4o-Ip7dCw,2312
|
|
56
|
-
mapillary_tools/geotag/video_extractors/gpx.py,sha256=Oycdn74CNiq1j8dAq7O9YiVNTun2mFWRH9VTUn_viRk,4114
|
|
57
|
-
mapillary_tools/geotag/video_extractors/native.py,sha256=XChOyDvrf88Vu8ED-FTT_hzax2FllokanszSW4Q2MEA,5702
|
|
58
|
-
mapillary_tools/gpmf/gpmf_gps_filter.py,sha256=7cg8wEjC1DrujKY76FZguXsaPqTRkG9-t32OeuOJQIc,2755
|
|
59
|
-
mapillary_tools/gpmf/gpmf_parser.py,sha256=uOVXkwJxC3Y2YfTdzUDpt7Bh0pdVqa5u0WUuv7pEJEs,24670
|
|
60
|
-
mapillary_tools/gpmf/gps_filter.py,sha256=zhXkuvr0Dd1bxGTYBwvk6P7xasY_RLuWjHaX7CdBayc,3796
|
|
61
|
-
mapillary_tools/mp4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
-
mapillary_tools/mp4/construct_mp4_parser.py,sha256=ArJ5C8iWJhHNPFkN048DXh6EwQ8LMfnTMwoNlKV9NoI,17191
|
|
63
|
-
mapillary_tools/mp4/io_utils.py,sha256=KZaJTlgFS27Oh3pcA5MKXYFoCifqgFaEZJyU6lb1jc4,5416
|
|
64
|
-
mapillary_tools/mp4/mp4_sample_parser.py,sha256=0ILTq8M6mXFTI3agKgljpvO9uYa7HXGUGZpdHT8a6ac,11547
|
|
65
|
-
mapillary_tools/mp4/simple_mp4_builder.py,sha256=9TUGk1hzI6mQFN1P30jwHL3dCYz3Zz7rsm8UBvMAqMc,12734
|
|
66
|
-
mapillary_tools/mp4/simple_mp4_parser.py,sha256=g3vvPhBoNu7anhVzC5_XQCV7IwfRWro1vJ6d6GyDkHE,6315
|
|
67
|
-
mapillary_tools-0.14.0a2.dist-info/licenses/LICENSE,sha256=l2D8cKfFmmJq_wcVq_JElPJrlvWQOzNWx7gMLINucxc,1292
|
|
68
|
-
mapillary_tools-0.14.0a2.dist-info/METADATA,sha256=UDVbKn5kqizwZmE70erGYDOnSz8sg9CuTd81GHSWtDI,19782
|
|
69
|
-
mapillary_tools-0.14.0a2.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
70
|
-
mapillary_tools-0.14.0a2.dist-info/entry_points.txt,sha256=A3f3LP-BO_P-U8Y29QfpT4jx6Mjk3sXjTi2Yew4bvj8,75
|
|
71
|
-
mapillary_tools-0.14.0a2.dist-info/top_level.txt,sha256=FbDkMgOrt1S70ho1WSBrOwzKOSkJFDwwqFOoY5-527s,16
|
|
72
|
-
mapillary_tools-0.14.0a2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|