mapillary-tools 0.13.3a1__py3-none-any.whl → 0.14.0a1__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 +235 -14
- mapillary_tools/authenticate.py +325 -64
- mapillary_tools/{geotag/blackvue_parser.py → blackvue_parser.py} +74 -54
- mapillary_tools/camm/camm_builder.py +55 -97
- mapillary_tools/camm/camm_parser.py +425 -177
- mapillary_tools/commands/__main__.py +11 -4
- mapillary_tools/commands/authenticate.py +8 -1
- mapillary_tools/commands/process.py +27 -51
- mapillary_tools/commands/process_and_upload.py +19 -5
- mapillary_tools/commands/sample_video.py +2 -3
- mapillary_tools/commands/upload.py +18 -9
- mapillary_tools/commands/video_process_and_upload.py +19 -5
- mapillary_tools/config.py +28 -12
- mapillary_tools/constants.py +46 -4
- mapillary_tools/exceptions.py +34 -35
- mapillary_tools/exif_read.py +158 -53
- mapillary_tools/exiftool_read.py +19 -5
- mapillary_tools/exiftool_read_video.py +12 -1
- mapillary_tools/exiftool_runner.py +77 -0
- mapillary_tools/geo.py +148 -107
- mapillary_tools/geotag/factory.py +298 -0
- mapillary_tools/geotag/geotag_from_generic.py +152 -11
- mapillary_tools/geotag/geotag_images_from_exif.py +43 -124
- mapillary_tools/geotag/geotag_images_from_exiftool.py +66 -70
- mapillary_tools/geotag/geotag_images_from_exiftool_both_image_and_video.py +32 -48
- mapillary_tools/geotag/geotag_images_from_gpx.py +41 -116
- mapillary_tools/geotag/geotag_images_from_gpx_file.py +15 -96
- mapillary_tools/geotag/geotag_images_from_nmea_file.py +4 -2
- mapillary_tools/geotag/geotag_images_from_video.py +46 -46
- mapillary_tools/geotag/geotag_videos_from_exiftool_video.py +98 -92
- mapillary_tools/geotag/geotag_videos_from_gpx.py +140 -0
- mapillary_tools/geotag/geotag_videos_from_video.py +149 -181
- mapillary_tools/geotag/options.py +159 -0
- mapillary_tools/{geotag → gpmf}/gpmf_parser.py +194 -171
- mapillary_tools/history.py +3 -11
- mapillary_tools/mp4/io_utils.py +0 -1
- mapillary_tools/mp4/mp4_sample_parser.py +11 -3
- mapillary_tools/mp4/simple_mp4_parser.py +0 -10
- mapillary_tools/process_geotag_properties.py +151 -386
- mapillary_tools/process_sequence_properties.py +554 -202
- mapillary_tools/sample_video.py +8 -15
- mapillary_tools/telemetry.py +24 -12
- mapillary_tools/types.py +80 -22
- mapillary_tools/upload.py +316 -298
- mapillary_tools/upload_api_v4.py +55 -122
- mapillary_tools/uploader.py +396 -254
- mapillary_tools/utils.py +26 -0
- mapillary_tools/video_data_extraction/extract_video_data.py +17 -36
- mapillary_tools/video_data_extraction/extractors/blackvue_parser.py +34 -19
- mapillary_tools/video_data_extraction/extractors/camm_parser.py +41 -17
- mapillary_tools/video_data_extraction/extractors/exiftool_runtime_parser.py +4 -1
- mapillary_tools/video_data_extraction/extractors/exiftool_xml_parser.py +1 -2
- mapillary_tools/video_data_extraction/extractors/gopro_parser.py +37 -22
- {mapillary_tools-0.13.3a1.dist-info → mapillary_tools-0.14.0a1.dist-info}/METADATA +3 -2
- mapillary_tools-0.14.0a1.dist-info/RECORD +78 -0
- {mapillary_tools-0.13.3a1.dist-info → mapillary_tools-0.14.0a1.dist-info}/WHEEL +1 -1
- mapillary_tools/geotag/utils.py +0 -26
- mapillary_tools-0.13.3a1.dist-info/RECORD +0 -75
- /mapillary_tools/{geotag → gpmf}/gpmf_gps_filter.py +0 -0
- /mapillary_tools/{geotag → gpmf}/gps_filter.py +0 -0
- {mapillary_tools-0.13.3a1.dist-info → mapillary_tools-0.14.0a1.dist-info}/entry_points.txt +0 -0
- {mapillary_tools-0.13.3a1.dist-info → mapillary_tools-0.14.0a1.dist-info/licenses}/LICENSE +0 -0
- {mapillary_tools-0.13.3a1.dist-info → mapillary_tools-0.14.0a1.dist-info}/top_level.txt +0 -0
mapillary_tools/utils.py
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import hashlib
|
|
2
4
|
import os
|
|
3
5
|
import typing as T
|
|
6
|
+
from multiprocessing import Pool
|
|
4
7
|
from pathlib import Path
|
|
5
8
|
|
|
6
9
|
|
|
@@ -194,3 +197,26 @@ def find_xml_files(import_paths: T.Sequence[Path]) -> T.List[Path]:
|
|
|
194
197
|
|
|
195
198
|
def get_file_size(path: Path) -> int:
|
|
196
199
|
return os.path.getsize(path)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
TMapIn = T.TypeVar("TMapIn")
|
|
203
|
+
TMapOut = T.TypeVar("TMapOut")
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def mp_map_maybe(
|
|
207
|
+
func: T.Callable[[TMapIn], TMapOut],
|
|
208
|
+
iterable: T.Iterable[TMapIn],
|
|
209
|
+
num_processes: int | None = None,
|
|
210
|
+
) -> T.Generator[TMapOut, None, None]:
|
|
211
|
+
if num_processes is None:
|
|
212
|
+
pool_num_processes = None
|
|
213
|
+
disable_multiprocessing = False
|
|
214
|
+
else:
|
|
215
|
+
pool_num_processes = max(num_processes, 1)
|
|
216
|
+
disable_multiprocessing = num_processes <= 0
|
|
217
|
+
|
|
218
|
+
if disable_multiprocessing:
|
|
219
|
+
yield from map(func, iterable)
|
|
220
|
+
else:
|
|
221
|
+
with Pool(processes=pool_num_processes) as pool:
|
|
222
|
+
yield from pool.imap(func, iterable)
|
|
@@ -1,20 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
4
|
import typing as T
|
|
3
|
-
from multiprocessing import Pool
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
7
|
import tqdm
|
|
7
8
|
|
|
8
9
|
from .. import exceptions, geo, utils
|
|
9
|
-
from ..
|
|
10
|
+
from ..gpmf import gpmf_gps_filter
|
|
10
11
|
from ..telemetry import GPSPoint
|
|
11
|
-
from ..types import
|
|
12
|
-
ErrorMetadata,
|
|
13
|
-
FileType,
|
|
14
|
-
MetadataOrError,
|
|
15
|
-
VideoMetadata,
|
|
16
|
-
VideoMetadataOrError,
|
|
17
|
-
)
|
|
12
|
+
from ..types import ErrorMetadata, FileType, VideoMetadata, VideoMetadataOrError
|
|
18
13
|
from . import video_data_parser_factory
|
|
19
14
|
from .cli_options import CliOptions
|
|
20
15
|
from .extractors.base_parser import BaseParser
|
|
@@ -29,30 +24,25 @@ class VideoDataExtractor:
|
|
|
29
24
|
def __init__(self, options: CliOptions) -> None:
|
|
30
25
|
self.options = options
|
|
31
26
|
|
|
32
|
-
def process(self) -> T.List[
|
|
27
|
+
def process(self) -> T.List[VideoMetadataOrError]:
|
|
33
28
|
paths = self.options["paths"]
|
|
34
29
|
self._check_paths(paths)
|
|
35
30
|
video_files = utils.find_videos(paths)
|
|
36
31
|
self._check_sources_cardinality(video_files)
|
|
37
32
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
iter,
|
|
50
|
-
desc="Extracting GPS tracks",
|
|
51
|
-
unit="videos",
|
|
52
|
-
disable=LOG.getEffectiveLevel() <= logging.DEBUG,
|
|
53
|
-
total=len(video_files),
|
|
54
|
-
)
|
|
33
|
+
map_results = utils.mp_map_maybe(
|
|
34
|
+
self.process_file, video_files, num_processes=self.options["num_processes"]
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
video_metadata_or_errors: list[VideoMetadataOrError] = list(
|
|
38
|
+
tqdm.tqdm(
|
|
39
|
+
map_results,
|
|
40
|
+
desc="Extracting GPS tracks",
|
|
41
|
+
unit="videos",
|
|
42
|
+
disable=LOG.getEffectiveLevel() <= logging.DEBUG,
|
|
43
|
+
total=len(video_files),
|
|
55
44
|
)
|
|
45
|
+
)
|
|
56
46
|
|
|
57
47
|
return video_metadata_or_errors
|
|
58
48
|
|
|
@@ -91,13 +81,11 @@ class VideoDataExtractor:
|
|
|
91
81
|
video_metadata = VideoMetadata(
|
|
92
82
|
filename=file,
|
|
93
83
|
filetype=FileType.VIDEO,
|
|
94
|
-
md5sum=None,
|
|
95
84
|
filesize=utils.get_file_size(file),
|
|
96
85
|
points=points,
|
|
97
86
|
make=make,
|
|
98
87
|
model=model,
|
|
99
88
|
)
|
|
100
|
-
video_metadata.update_md5sum()
|
|
101
89
|
return video_metadata
|
|
102
90
|
else:
|
|
103
91
|
return ErrorMetadata(
|
|
@@ -166,11 +154,4 @@ class VideoDataExtractor:
|
|
|
166
154
|
if not points:
|
|
167
155
|
raise exceptions.MapillaryGPSNoiseError("GPS is too noisy")
|
|
168
156
|
|
|
169
|
-
stationary = video_utils.is_video_stationary(
|
|
170
|
-
geo.get_max_distance_from_start([(p.lat, p.lon) for p in points])
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
if stationary:
|
|
174
|
-
raise exceptions.MapillaryStationaryVideoError("Stationary video")
|
|
175
|
-
|
|
176
157
|
return points
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
|
|
1
5
|
import typing as T
|
|
2
6
|
|
|
3
|
-
from ... import geo
|
|
4
|
-
from ...geotag import blackvue_parser
|
|
5
|
-
from ...mp4 import simple_mp4_parser as sparser
|
|
7
|
+
from ... import blackvue_parser, geo
|
|
6
8
|
from .base_parser import BaseParser
|
|
7
9
|
|
|
8
10
|
|
|
@@ -13,22 +15,35 @@ class BlackVueParser(BaseParser):
|
|
|
13
15
|
|
|
14
16
|
pointsFound: bool = False
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
@functools.cached_property
|
|
19
|
+
def extract_blackvue_info(self) -> blackvue_parser.BlackVueInfo | None:
|
|
17
20
|
source_path = self.geotag_source_path
|
|
18
21
|
if not source_path:
|
|
19
|
-
return
|
|
22
|
+
return None
|
|
23
|
+
|
|
20
24
|
with source_path.open("rb") as fp:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
return blackvue_parser.extract_blackvue_info(fp)
|
|
26
|
+
|
|
27
|
+
def extract_points(self) -> T.Sequence[geo.Point]:
|
|
28
|
+
blackvue_info = self.extract_blackvue_info
|
|
29
|
+
|
|
30
|
+
if blackvue_info is None:
|
|
31
|
+
return []
|
|
32
|
+
|
|
33
|
+
return blackvue_info.gps or []
|
|
34
|
+
|
|
35
|
+
def extract_make(self) -> str | None:
|
|
36
|
+
blackvue_info = self.extract_blackvue_info
|
|
37
|
+
|
|
38
|
+
if blackvue_info is None:
|
|
39
|
+
return None
|
|
40
|
+
|
|
41
|
+
return blackvue_info.make
|
|
42
|
+
|
|
43
|
+
def extract_model(self) -> str | None:
|
|
44
|
+
blackvue_info = self.extract_blackvue_info
|
|
45
|
+
|
|
46
|
+
if blackvue_info is None:
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
return blackvue_info.model
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
import typing as T
|
|
3
4
|
|
|
4
5
|
from ... import geo
|
|
@@ -12,27 +13,50 @@ class CammParser(BaseParser):
|
|
|
12
13
|
must_rebase_times_to_zero = False
|
|
13
14
|
parser_label = "camm"
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
source_path = self.geotag_source_path
|
|
18
|
-
if not source_path:
|
|
19
|
-
return "", ""
|
|
16
|
+
_extracted: bool = False
|
|
17
|
+
_cached_camm_info: camm_parser.CAMMInfo | None = None
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
# TODO: use @functools.cached_property
|
|
20
|
+
def _extract_camm_info(self) -> camm_parser.CAMMInfo | None:
|
|
21
|
+
if self._extracted:
|
|
22
|
+
return self._cached_camm_info
|
|
23
|
+
|
|
24
|
+
self._extracted = True
|
|
23
25
|
|
|
24
|
-
def extract_points(self) -> T.Sequence[geo.Point]:
|
|
25
26
|
source_path = self.geotag_source_path
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
|
|
28
|
+
if source_path is None:
|
|
29
|
+
# source_path not found
|
|
30
|
+
return None
|
|
31
|
+
|
|
28
32
|
with source_path.open("rb") as fp:
|
|
29
33
|
try:
|
|
30
|
-
|
|
34
|
+
self._cached_camm_info = camm_parser.extract_camm_info(fp)
|
|
31
35
|
except sparser.ParsingError:
|
|
32
|
-
|
|
36
|
+
self._cached_camm_info = None
|
|
37
|
+
|
|
38
|
+
return self._cached_camm_info
|
|
39
|
+
|
|
40
|
+
def extract_points(self) -> T.Sequence[geo.Point]:
|
|
41
|
+
camm_info = self._extract_camm_info()
|
|
42
|
+
|
|
43
|
+
if camm_info is None:
|
|
44
|
+
return []
|
|
45
|
+
|
|
46
|
+
return T.cast(T.List[geo.Point], camm_info.gps or camm_info.mini_gps)
|
|
47
|
+
|
|
48
|
+
def extract_make(self) -> str | None:
|
|
49
|
+
camm_info = self._extract_camm_info()
|
|
50
|
+
|
|
51
|
+
if camm_info is None:
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
return camm_info.make
|
|
55
|
+
|
|
56
|
+
def extract_model(self) -> str | None:
|
|
57
|
+
camm_info = self._extract_camm_info()
|
|
33
58
|
|
|
34
|
-
|
|
35
|
-
|
|
59
|
+
if camm_info is None:
|
|
60
|
+
return None
|
|
36
61
|
|
|
37
|
-
|
|
38
|
-
return self._camera_info[1] or None
|
|
62
|
+
return camm_info.model
|
|
@@ -24,7 +24,10 @@ class ExiftoolRuntimeParser(BaseParser):
|
|
|
24
24
|
self, video_path: Path, options: CliOptions, parser_options: CliParserOptions
|
|
25
25
|
):
|
|
26
26
|
super().__init__(video_path, options, parser_options)
|
|
27
|
-
|
|
27
|
+
if constants.EXIFTOOL_PATH is None:
|
|
28
|
+
exiftool_path = shutil.which("exiftool")
|
|
29
|
+
else:
|
|
30
|
+
exiftool_path = shutil.which(constants.EXIFTOOL_PATH)
|
|
28
31
|
|
|
29
32
|
if not exiftool_path:
|
|
30
33
|
raise exceptions.MapillaryExiftoolNotFoundError(
|
|
@@ -4,9 +4,8 @@ import xml.etree.ElementTree as ET
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
from ... import geo
|
|
7
|
-
from ...exiftool_read import EXIFTOOL_NAMESPACES
|
|
7
|
+
from ...exiftool_read import _DESCRIPTION_TAG, EXIFTOOL_NAMESPACES
|
|
8
8
|
from ...exiftool_read_video import ExifToolReadVideo
|
|
9
|
-
from ...geotag.geotag_videos_from_exiftool_video import _DESCRIPTION_TAG
|
|
10
9
|
from ..cli_options import CliOptions, CliParserOptions
|
|
11
10
|
from .base_parser import BaseParser
|
|
12
11
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import typing as T
|
|
2
4
|
|
|
3
5
|
from ... import geo
|
|
4
|
-
from ...
|
|
6
|
+
from ...gpmf import gpmf_parser
|
|
5
7
|
from ...mp4 import simple_mp4_parser as sparser
|
|
6
8
|
from .base_parser import BaseParser
|
|
7
9
|
|
|
@@ -11,33 +13,46 @@ class GoProParser(BaseParser):
|
|
|
11
13
|
must_rebase_times_to_zero = False
|
|
12
14
|
parser_label = "gopro"
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
_extracted: bool = False
|
|
17
|
+
_cached_gopro_info: gpmf_parser.GoProInfo | None = None
|
|
18
|
+
|
|
19
|
+
def _extract_gopro_info(self) -> gpmf_parser.GoProInfo | None:
|
|
20
|
+
if self._extracted:
|
|
21
|
+
return self._cached_gopro_info
|
|
22
|
+
|
|
23
|
+
self._extracted = True
|
|
15
24
|
|
|
16
|
-
def extract_points(self) -> T.Sequence[geo.Point]:
|
|
17
25
|
source_path = self.geotag_source_path
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
|
|
27
|
+
if source_path is None:
|
|
28
|
+
# source_path not found
|
|
29
|
+
return None
|
|
30
|
+
|
|
20
31
|
with source_path.open("rb") as fp:
|
|
21
32
|
try:
|
|
22
|
-
|
|
23
|
-
self.pointsFound = len(points) > 0
|
|
24
|
-
return points
|
|
33
|
+
self._cached_gopro_info = gpmf_parser.extract_gopro_info(fp)
|
|
25
34
|
except sparser.ParsingError:
|
|
26
|
-
|
|
35
|
+
self._cached_gopro_info = None
|
|
27
36
|
|
|
28
|
-
|
|
29
|
-
model = self.extract_model()
|
|
30
|
-
if model:
|
|
31
|
-
return "GoPro"
|
|
37
|
+
return self._cached_gopro_info
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
def extract_points(self) -> T.Sequence[geo.Point]:
|
|
40
|
+
gopro_info = self._extract_gopro_info()
|
|
41
|
+
if gopro_info is None:
|
|
42
|
+
return []
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
return T.cast(T.Sequence[geo.Point], gopro_info.gps)
|
|
45
|
+
|
|
46
|
+
def extract_make(self) -> str | None:
|
|
47
|
+
gopro_info = self._extract_gopro_info()
|
|
48
|
+
if gopro_info is None:
|
|
41
49
|
return None
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
|
|
51
|
+
return gopro_info.make
|
|
52
|
+
|
|
53
|
+
def extract_model(self) -> str | None:
|
|
54
|
+
gopro_info = self._extract_gopro_info()
|
|
55
|
+
if gopro_info is None:
|
|
56
|
+
return None
|
|
57
|
+
|
|
58
|
+
return gopro_info.model
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mapillary_tools
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0a1
|
|
4
4
|
Summary: Mapillary Image/Video Import Pipeline
|
|
5
5
|
Home-page: https://github.com/mapillary/mapillary_tools
|
|
6
6
|
Author: Mapillary
|
|
@@ -23,6 +23,7 @@ Dynamic: description
|
|
|
23
23
|
Dynamic: description-content-type
|
|
24
24
|
Dynamic: home-page
|
|
25
25
|
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
26
27
|
Dynamic: requires-dist
|
|
27
28
|
Dynamic: requires-python
|
|
28
29
|
Dynamic: summary
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
mapillary_tools/__init__.py,sha256=QLNHmol7wzyKCCv_FiGax8HmQcDUu0qcI16mFQJqGPw,21
|
|
2
|
+
mapillary_tools/api_v4.py,sha256=jAuhmWDSeP06dK-D2Wm-jDbDb317q3028q_LeTBf0_s,10117
|
|
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=-s_cfpS3sOgtAydmElRDjOh5mNFCj8DxOxoxDc1ubPE,2624
|
|
6
|
+
mapillary_tools/constants.py,sha256=D0_SP1Zaa7ovGkPkTwuxXLqOauU6fH-WrnyOZs-V_RM,3791
|
|
7
|
+
mapillary_tools/exceptions.py,sha256=I6mmz_OvnHppu9eDJvluBXU3G8b4sqAb-rP8yyPDA2g,2404
|
|
8
|
+
mapillary_tools/exif_read.py,sha256=CtdDOOOhaqp9icaXAfMlvZKaFO2GjHwGvsvatmCjwu8,32500
|
|
9
|
+
mapillary_tools/exif_write.py,sha256=3PawLnBOY8Z86TYiA_F4LxRhe5Ui6CTNhxYm9yeJNX8,8786
|
|
10
|
+
mapillary_tools/exiftool_read.py,sha256=qjhL_JUNwZE7EIvJkmH8PLFzUpeTmnmuqcDU3VLXh5o,16632
|
|
11
|
+
mapillary_tools/exiftool_read_video.py,sha256=7GoCiy-YL9sdMquoLzh2SZF4J3eIxr0K4_MXOBQYC6U,14875
|
|
12
|
+
mapillary_tools/exiftool_runner.py,sha256=J04V0Y70kTiGE2q2m5TKWfORd0hmYNmAsmrZxb34S3s,2316
|
|
13
|
+
mapillary_tools/ffmpeg.py,sha256=p1a5VxlbpLGLkzulMv51bpyD5omwK7Qg8277TGYmcZA,15780
|
|
14
|
+
mapillary_tools/geo.py,sha256=6t6EVtAOgHvzz6XGvxR3wCtE1NnpcE2XH-fuuAwgvKk,11136
|
|
15
|
+
mapillary_tools/history.py,sha256=VCrN-TXZMhGRUyL8hEGRSDsz7uliMyvFR6T5FXtXm5k,1620
|
|
16
|
+
mapillary_tools/ipc.py,sha256=DwWQb9hNshx0bg0Fo5NjY0mXjs-FkbR6tIQmjMgMtmg,1089
|
|
17
|
+
mapillary_tools/process_geotag_properties.py,sha256=H9AvrTWh-3uWyJAn0RmQY63dIVQlWPLMP5xGnblXqvk,13949
|
|
18
|
+
mapillary_tools/process_sequence_properties.py,sha256=dOdjZOZB8BY_foQlQqQ5NmsdlqePQL-Ca5qg5SHLZZc,23442
|
|
19
|
+
mapillary_tools/sample_video.py,sha256=RyUgpdpV3-nmCRo1o5rPVAWvnvNI5_o-BIaenJKvyAg,13908
|
|
20
|
+
mapillary_tools/telemetry.py,sha256=FQNSP2qCbLWPJsqF7aN6iS0_hueDrvRXrJOf_JBEXoI,1571
|
|
21
|
+
mapillary_tools/types.py,sha256=zaaW7kg_io67xUPrQoNbHe21p0YRZP85BqWiH_L2GrU,23479
|
|
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=zm8ndI7wWrBWVll5HuI7G5QqKJ7fY9llM0T2l4Ywoto,6679
|
|
26
|
+
mapillary_tools/camm/camm_builder.py,sha256=ub6Z9ijep8zAo1NOlU51Gxk95kQ2vfN58YgVCLmNMRk,9211
|
|
27
|
+
mapillary_tools/camm/camm_parser.py,sha256=Rf29dHyMzaXiXMmetoR4fTS1MTtLmSylfj4QmMeDGi8,18053
|
|
28
|
+
mapillary_tools/commands/__init__.py,sha256=41CFrPLGlG3566uhxssEF3TGAtSpADFPPcDMHbViU0E,171
|
|
29
|
+
mapillary_tools/commands/__main__.py,sha256=CPSShHJJniNA8sZYmk2lG8bGtrDsixw-BAW1etwUk00,5067
|
|
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/__init__.py,sha256=ohud7lLsqO1b9ddCF0SjrNOcUcRdQzNVR43RkcVVLAc,33
|
|
39
|
+
mapillary_tools/geotag/factory.py,sha256=M1xTeoGGk0xLgjzUmlElhnWeuCUDiy0jSpRrElljHeI,9814
|
|
40
|
+
mapillary_tools/geotag/geotag_from_generic.py,sha256=mk1R8ZaYFEnTlk-AitdGROdo4Bj8TXHIgoEtQZY1BdM,4901
|
|
41
|
+
mapillary_tools/geotag/geotag_images_from_exif.py,sha256=UvIsHjEkGQMlEA__wSTcep0jPKxfMm46DCH_pWhs9O8,2216
|
|
42
|
+
mapillary_tools/geotag/geotag_images_from_exiftool.py,sha256=J0lkEQvPId0CdDX7P-8OORCTe2ZcZBCarzstA88CSc4,3566
|
|
43
|
+
mapillary_tools/geotag/geotag_images_from_exiftool_both_image_and_video.py,sha256=7lcvRCih3sVdYXvxZOlP05gZd7fAe0GIUlk8tT6G9gA,2593
|
|
44
|
+
mapillary_tools/geotag/geotag_images_from_gpx.py,sha256=Za7_o8ZTCvijtKyFRZRK4diTqSdRZI7wE3QldEWVAIo,6193
|
|
45
|
+
mapillary_tools/geotag/geotag_images_from_gpx_file.py,sha256=qySMYrHexE31xeJJJCqiGzE13BE6LslpeLUNBfwXzA4,1953
|
|
46
|
+
mapillary_tools/geotag/geotag_images_from_nmea_file.py,sha256=_WizWxlbt5eIguGJKqlKNZM-eLNDCcsDXHUitMlFrx4,1680
|
|
47
|
+
mapillary_tools/geotag/geotag_images_from_video.py,sha256=2FZDbrYKXFzuUALH_QunIL8mQuOPTk3BTv3Cq2TR6oI,3114
|
|
48
|
+
mapillary_tools/geotag/geotag_videos_from_exiftool_video.py,sha256=5AWDQuGV7U0szOCQ3BIeZW0brUl_F8ks0ymcXBTN8H8,5178
|
|
49
|
+
mapillary_tools/geotag/geotag_videos_from_gpx.py,sha256=Q57lgqpvPdXzyvSfnNhTi9ZtuvEwX-Zti9khCzVFteE,4724
|
|
50
|
+
mapillary_tools/geotag/geotag_videos_from_video.py,sha256=A2buI4iGSaceujzCjGLH7p7OzEALlWs5NOqrvBvYhGE,6060
|
|
51
|
+
mapillary_tools/geotag/options.py,sha256=JaRWnDMZIGsh5Wt_nhfWrBgwg-V5SuGc61gg_RehhlI,4291
|
|
52
|
+
mapillary_tools/gpmf/gpmf_gps_filter.py,sha256=7cg8wEjC1DrujKY76FZguXsaPqTRkG9-t32OeuOJQIc,2755
|
|
53
|
+
mapillary_tools/gpmf/gpmf_parser.py,sha256=aj9IT2BUDZpFXs0Jpoz5wVEss-p71GoNTWz4bk_N5jA,24732
|
|
54
|
+
mapillary_tools/gpmf/gps_filter.py,sha256=4CPL8glxdzPWIbfGPPgyqMLyiZFt-djce5vhiFPuZB8,3766
|
|
55
|
+
mapillary_tools/mp4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
mapillary_tools/mp4/construct_mp4_parser.py,sha256=31oJbg6umKJjdZ0Ni5eCudC0lXd0Y-K_EiCCj6yW9js,17199
|
|
57
|
+
mapillary_tools/mp4/io_utils.py,sha256=KZaJTlgFS27Oh3pcA5MKXYFoCifqgFaEZJyU6lb1jc4,5416
|
|
58
|
+
mapillary_tools/mp4/mp4_sample_parser.py,sha256=vqpURHJZ-DRhwccdwKYCDTrOQNN70LCWqLFEPuGZLTc,11586
|
|
59
|
+
mapillary_tools/mp4/simple_mp4_builder.py,sha256=7zVepmW-2SwoAeA-fvucmBW94jlcCFExDcEg8P3TOGY,12727
|
|
60
|
+
mapillary_tools/mp4/simple_mp4_parser.py,sha256=M5e2MuUUIfo1rUarX_VJl65LRVKjk842SmwNA-OJtYI,6326
|
|
61
|
+
mapillary_tools/video_data_extraction/cli_options.py,sha256=N0uHi9Uzaw1C8N-PE3yu8J3uEQP3HvSjJ9AZbIqoREg,535
|
|
62
|
+
mapillary_tools/video_data_extraction/extract_video_data.py,sha256=sVumfYDJ9Pf8tSxatHI3x9vs3eGjyftdJ7noYgP2b1I,5400
|
|
63
|
+
mapillary_tools/video_data_extraction/video_data_parser_factory.py,sha256=qaJHvLgwI5lukJncMd8ggxeSxXOiVzBSJO5GlGQYiXY,1134
|
|
64
|
+
mapillary_tools/video_data_extraction/extractors/base_parser.py,sha256=s7Xuwg4I5JZ27oL4ebMSdo093plAXfZ-6uDQ_h97WHY,2134
|
|
65
|
+
mapillary_tools/video_data_extraction/extractors/blackvue_parser.py,sha256=PE06HW8b8eTIGrDCoAlt7qkPb88T_rdnFO2ArZJlLLk,1209
|
|
66
|
+
mapillary_tools/video_data_extraction/extractors/camm_parser.py,sha256=8xHg-KJ_tG-ApR1MbAPsGGnx0TN2s07IHV7A-oeQ-Ic,1609
|
|
67
|
+
mapillary_tools/video_data_extraction/extractors/exiftool_runtime_parser.py,sha256=qDk9avFBAHfzbSQ32ifxoIZNuUXqRcHs2z1HEpR_X6E,2385
|
|
68
|
+
mapillary_tools/video_data_extraction/extractors/exiftool_xml_parser.py,sha256=rzMwRzF9erKTtzNCHKhAN7nAaRRIIHToZglkxHab7NE,1679
|
|
69
|
+
mapillary_tools/video_data_extraction/extractors/generic_video_parser.py,sha256=34O6Km5kNDoJNJtIUOwtAzzMntuqkSZJfeli7caWSkA,1693
|
|
70
|
+
mapillary_tools/video_data_extraction/extractors/gopro_parser.py,sha256=LDBzj_DKQkc0gYHWKt_WSuSry-fOLNJCBWpi0lUjXLs,1568
|
|
71
|
+
mapillary_tools/video_data_extraction/extractors/gpx_parser.py,sha256=FNrdnXl48k8I1I5fGwYsClhfFEHVsooRLRboUYECv3I,3811
|
|
72
|
+
mapillary_tools/video_data_extraction/extractors/nmea_parser.py,sha256=raSXavBvP-0LJCB_TwLL0mOv2uHSsB744igTsaKAaGc,658
|
|
73
|
+
mapillary_tools-0.14.0a1.dist-info/licenses/LICENSE,sha256=l2D8cKfFmmJq_wcVq_JElPJrlvWQOzNWx7gMLINucxc,1292
|
|
74
|
+
mapillary_tools-0.14.0a1.dist-info/METADATA,sha256=Txd8DvdzG4Z2DH7sunqecdOAi80TUZIY5Y5WYytBcpo,19782
|
|
75
|
+
mapillary_tools-0.14.0a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
76
|
+
mapillary_tools-0.14.0a1.dist-info/entry_points.txt,sha256=A3f3LP-BO_P-U8Y29QfpT4jx6Mjk3sXjTi2Yew4bvj8,75
|
|
77
|
+
mapillary_tools-0.14.0a1.dist-info/top_level.txt,sha256=FbDkMgOrt1S70ho1WSBrOwzKOSkJFDwwqFOoY5-527s,16
|
|
78
|
+
mapillary_tools-0.14.0a1.dist-info/RECORD,,
|
mapillary_tools/geotag/utils.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import datetime
|
|
2
|
-
import typing as T
|
|
3
|
-
|
|
4
|
-
import gpxpy
|
|
5
|
-
import gpxpy.gpx
|
|
6
|
-
|
|
7
|
-
from .. import geo
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def is_video_stationary(max_distance_from_start: float) -> bool:
|
|
11
|
-
radius_threshold = 10
|
|
12
|
-
return max_distance_from_start < radius_threshold
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def convert_points_to_gpx_segment(points: T.Sequence[geo.Point]):
|
|
16
|
-
gpx_segment = gpxpy.gpx.GPXTrackSegment()
|
|
17
|
-
for point in points:
|
|
18
|
-
gpx_segment.points.append(
|
|
19
|
-
gpxpy.gpx.GPXTrackPoint(
|
|
20
|
-
point.lat,
|
|
21
|
-
point.lon,
|
|
22
|
-
elevation=point.alt,
|
|
23
|
-
time=datetime.datetime.utcfromtimestamp(point.time),
|
|
24
|
-
)
|
|
25
|
-
)
|
|
26
|
-
return gpx_segment
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
mapillary_tools/__init__.py,sha256=j5y1cIo14OOuS27ROUABVHN9119rEXV-bdoM-z117o8,21
|
|
2
|
-
mapillary_tools/api_v4.py,sha256=zhRtgx3EnzgqtjziRhvFq3ONvsPaB9hROsuKFcf_pFo,5197
|
|
3
|
-
mapillary_tools/authenticate.py,sha256=LCFcs6LqZmXaYkTUEKgGfmqytWdh5v_L3KXB48ojOZ4,3090
|
|
4
|
-
mapillary_tools/config.py,sha256=jCjaK4jJaTY4AV4qf_b_tcxn5LA_uPsEWlGIdm2zw6g,2103
|
|
5
|
-
mapillary_tools/constants.py,sha256=KKQMwzpN2z7wka6lhZv-agdxNldaEQqvQXu3Kg5XuUk,2453
|
|
6
|
-
mapillary_tools/exceptions.py,sha256=Mh1tgVEFTSMnYEzrl9x7b95fW9Z3SPVD_YMEl7r8I0I,2693
|
|
7
|
-
mapillary_tools/exif_read.py,sha256=F60A0-T8XSBHvFKgVIrUz_ZWKQrTFWrtj3c6siB0IMg,28707
|
|
8
|
-
mapillary_tools/exif_write.py,sha256=3PawLnBOY8Z86TYiA_F4LxRhe5Ui6CTNhxYm9yeJNX8,8786
|
|
9
|
-
mapillary_tools/exiftool_read.py,sha256=Mg027me1IzblKb9IyGaLgU6goFqk_QiOt0Ppq-CeECg,16288
|
|
10
|
-
mapillary_tools/exiftool_read_video.py,sha256=f3l8HiDjkrIhmslIXSsC8cNgkqCVWUFkN_0OQ5ZUd-U,14431
|
|
11
|
-
mapillary_tools/ffmpeg.py,sha256=p1a5VxlbpLGLkzulMv51bpyD5omwK7Qg8277TGYmcZA,15780
|
|
12
|
-
mapillary_tools/geo.py,sha256=QybCiQr0UDcH6DIDa2L6cZw4sDoTJNgR99oo6S7gCts,9746
|
|
13
|
-
mapillary_tools/history.py,sha256=l2z3YdYRyBGEOvcqcLExTV-0LUAX3iBq2OdBzLNMHLM,1766
|
|
14
|
-
mapillary_tools/ipc.py,sha256=DwWQb9hNshx0bg0Fo5NjY0mXjs-FkbR6tIQmjMgMtmg,1089
|
|
15
|
-
mapillary_tools/process_geotag_properties.py,sha256=w4hhv_c4sRydCK9QCO50sT2yo2zeVlY7dSdXQ93InFc,23159
|
|
16
|
-
mapillary_tools/process_sequence_properties.py,sha256=5oYEjz9crnLVQtCkxbwn57TkeuHFbBh_zQXQSA4ENWg,11561
|
|
17
|
-
mapillary_tools/sample_video.py,sha256=dpdX7bUNEmcrz-3gh3Y3awnTDX66pChbTKuF8qGfeCI,14400
|
|
18
|
-
mapillary_tools/telemetry.py,sha256=WpBGPF_GMPjM_EFqXIutFtpDFL9wj7yEzGNGnfQZUo8,1255
|
|
19
|
-
mapillary_tools/types.py,sha256=6kww2UdKM6YzabYbc862BYzEWtxL2hhxCRFfeDiUtF0,22074
|
|
20
|
-
mapillary_tools/upload.py,sha256=8dQ3ZWsjau1_xZN3ssjGGkBnLKbKIhjC91-zWstYlD8,24439
|
|
21
|
-
mapillary_tools/upload_api_v4.py,sha256=VXIAA_lar4y4RgvNuKpkE7CVl4uWa6kNT59hCVFClSk,8490
|
|
22
|
-
mapillary_tools/uploader.py,sha256=DBHso4QIP5nsZFDynLjkUvytzwpEOPnOlfeDyA6rTBk,14007
|
|
23
|
-
mapillary_tools/utils.py,sha256=VNtK1tAb3Hh8y3P5e5Y3iewREkIoLDa3C2myRYcF2lY,5970
|
|
24
|
-
mapillary_tools/camm/camm_builder.py,sha256=TXZfhu3xGjtrLEWnB14D7aSOrHOoSJef24YSLApiIfY,10631
|
|
25
|
-
mapillary_tools/camm/camm_parser.py,sha256=RaCWeLvS_AyHD6B6wDUu9DAsdfByVHMAPTqEqjtFibE,9734
|
|
26
|
-
mapillary_tools/commands/__init__.py,sha256=41CFrPLGlG3566uhxssEF3TGAtSpADFPPcDMHbViU0E,171
|
|
27
|
-
mapillary_tools/commands/__main__.py,sha256=VdWkx1ekPH-88Ybe78IcO9FWpZ5cUhsbGRw7LuzQObU,4832
|
|
28
|
-
mapillary_tools/commands/authenticate.py,sha256=4aVvAQal_mqtm2NEMBt5aKLahi0iRdO8b7WSBf6jokA,1136
|
|
29
|
-
mapillary_tools/commands/process.py,sha256=VxcvQpYHPw7QfT9dNwBLV1jWQ-1w4GtVNVPpmu4Sx9s,10578
|
|
30
|
-
mapillary_tools/commands/process_and_upload.py,sha256=osJv1TVHYAG5E-EsA0nB1F3RkKXMadLR2t1EGK0Ifqw,654
|
|
31
|
-
mapillary_tools/commands/sample_video.py,sha256=bTJmlDsajkC-QJ_ZO_scdD4R664zs-r_dh-x2PlOgyY,3281
|
|
32
|
-
mapillary_tools/commands/upload.py,sha256=JIWgxupV3ppLvPi1iE7UVaE1302JGcIOvnuNt1Y7YEw,1671
|
|
33
|
-
mapillary_tools/commands/video_process.py,sha256=-wQeeIwWXPmy81HQHam5A0huMLRHknkEFa_V1OwElU4,890
|
|
34
|
-
mapillary_tools/commands/video_process_and_upload.py,sha256=llV0dHBS31qPZp-Fs1GCM0yYezEA_VF_tfYcp-Z8NkY,701
|
|
35
|
-
mapillary_tools/commands/zip.py,sha256=DVQuMLpbstwiy5o4pU_fBvM6eORuFjLeySd80AhHKU0,991
|
|
36
|
-
mapillary_tools/geotag/__init__.py,sha256=ohud7lLsqO1b9ddCF0SjrNOcUcRdQzNVR43RkcVVLAc,33
|
|
37
|
-
mapillary_tools/geotag/blackvue_parser.py,sha256=_LTI_biiznFPvrk5dcpoDH4tP4_7khPIpW5Daumuf68,2968
|
|
38
|
-
mapillary_tools/geotag/geotag_from_generic.py,sha256=bCYfIbkv4qIlkKttAjSGl9t4i_QAtzIiCZoth1hMVI4,480
|
|
39
|
-
mapillary_tools/geotag/geotag_images_from_exif.py,sha256=hCgBwZABk2tbBQC3cHQBV5pvNwlAo8AkWSgCD0BU_QU,4823
|
|
40
|
-
mapillary_tools/geotag/geotag_images_from_exiftool.py,sha256=a-c4H8VIyPdJkfUIvJho0phR0QU0zN8-lSyiCz0wc4s,3981
|
|
41
|
-
mapillary_tools/geotag/geotag_images_from_exiftool_both_image_and_video.py,sha256=nRVAjgTJwx_eCaSBpPCgcIaZs3EYgGueYxSS9XhKv40,3350
|
|
42
|
-
mapillary_tools/geotag/geotag_images_from_gpx.py,sha256=S9Pw6FvP5kRSpHUnKUYKXmw0CHa9V92UmrS_MJfbjS4,9053
|
|
43
|
-
mapillary_tools/geotag/geotag_images_from_gpx_file.py,sha256=-vTbZ1HufZzJCd8VvukdTjsJRcymtfld2W5t65VSG5E,5300
|
|
44
|
-
mapillary_tools/geotag/geotag_images_from_nmea_file.py,sha256=dDdHnJInQ_WN3ZRf-w44NSBElDLPs7XYBiimvE2iCNo,1651
|
|
45
|
-
mapillary_tools/geotag/geotag_images_from_video.py,sha256=XsaWOFChGItl-j1UbKM4hNjUqN29pVNbMpGT_BvI-o8,3306
|
|
46
|
-
mapillary_tools/geotag/geotag_videos_from_exiftool_video.py,sha256=fkkWou1WFt3ft024399vis9No2cxrwot7Pg5HBw7o7s,5225
|
|
47
|
-
mapillary_tools/geotag/geotag_videos_from_video.py,sha256=mqBZKUEkqT96nOzl5LJxzzTKuKsnAkMK5lH8k3oY3YE,7330
|
|
48
|
-
mapillary_tools/geotag/gpmf_gps_filter.py,sha256=7cg8wEjC1DrujKY76FZguXsaPqTRkG9-t32OeuOJQIc,2755
|
|
49
|
-
mapillary_tools/geotag/gpmf_parser.py,sha256=6Q38oeSd2kHTs44Fzpg9R555EbQqdd5QcIuIZdG4z_o,23233
|
|
50
|
-
mapillary_tools/geotag/gps_filter.py,sha256=4CPL8glxdzPWIbfGPPgyqMLyiZFt-djce5vhiFPuZB8,3766
|
|
51
|
-
mapillary_tools/geotag/utils.py,sha256=Orl35Df4ypxj4v6Lu1Mhk9d2XZxa8yNffz1s1C0JZsQ,651
|
|
52
|
-
mapillary_tools/mp4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
-
mapillary_tools/mp4/construct_mp4_parser.py,sha256=31oJbg6umKJjdZ0Ni5eCudC0lXd0Y-K_EiCCj6yW9js,17199
|
|
54
|
-
mapillary_tools/mp4/io_utils.py,sha256=wc3-F1TnxZjTwB7-oea5yRmRQ_0T3Zbz8oBkW9JL8d4,5454
|
|
55
|
-
mapillary_tools/mp4/mp4_sample_parser.py,sha256=YnTIIHGHL3ViLo_Ap0C2hk8MDWbWtvSXBLD42pRIWqY,11337
|
|
56
|
-
mapillary_tools/mp4/simple_mp4_builder.py,sha256=7zVepmW-2SwoAeA-fvucmBW94jlcCFExDcEg8P3TOGY,12727
|
|
57
|
-
mapillary_tools/mp4/simple_mp4_parser.py,sha256=eji6JZa497wK8CY8hQt21fjgtnd0nzuyBx7MPEKST74,6671
|
|
58
|
-
mapillary_tools/video_data_extraction/cli_options.py,sha256=N0uHi9Uzaw1C8N-PE3yu8J3uEQP3HvSjJ9AZbIqoREg,535
|
|
59
|
-
mapillary_tools/video_data_extraction/extract_video_data.py,sha256=_2BBdSYeYKR4BCHAZa1Jzo7OIK_va1lJDkTU2sXsPc0,6000
|
|
60
|
-
mapillary_tools/video_data_extraction/video_data_parser_factory.py,sha256=qaJHvLgwI5lukJncMd8ggxeSxXOiVzBSJO5GlGQYiXY,1134
|
|
61
|
-
mapillary_tools/video_data_extraction/extractors/base_parser.py,sha256=s7Xuwg4I5JZ27oL4ebMSdo093plAXfZ-6uDQ_h97WHY,2134
|
|
62
|
-
mapillary_tools/video_data_extraction/extractors/blackvue_parser.py,sha256=jAcGyF6PML2EdJ4zle8cR12QeTRZc5qxlz8_4gcTZPU,1089
|
|
63
|
-
mapillary_tools/video_data_extraction/extractors/camm_parser.py,sha256=YMiViocXSVlfn8_qm1jcwSJhnnEaK8v5ADHwo2YXe10,1117
|
|
64
|
-
mapillary_tools/video_data_extraction/extractors/exiftool_runtime_parser.py,sha256=PFNCRk9pGrPIfVwLMcnzmVNMITVjNHhbrOOMwxaSstg,2270
|
|
65
|
-
mapillary_tools/video_data_extraction/extractors/exiftool_xml_parser.py,sha256=Tt0h4TiCKocERWMlRXzlpoaA_WJ_4b20MgMLGYNl4AM,1734
|
|
66
|
-
mapillary_tools/video_data_extraction/extractors/generic_video_parser.py,sha256=34O6Km5kNDoJNJtIUOwtAzzMntuqkSZJfeli7caWSkA,1693
|
|
67
|
-
mapillary_tools/video_data_extraction/extractors/gopro_parser.py,sha256=IVnTyquSraTUaG9rxbJfVWc1-drdY5PaHn5urh3IBk4,1325
|
|
68
|
-
mapillary_tools/video_data_extraction/extractors/gpx_parser.py,sha256=FNrdnXl48k8I1I5fGwYsClhfFEHVsooRLRboUYECv3I,3811
|
|
69
|
-
mapillary_tools/video_data_extraction/extractors/nmea_parser.py,sha256=raSXavBvP-0LJCB_TwLL0mOv2uHSsB744igTsaKAaGc,658
|
|
70
|
-
mapillary_tools-0.13.3a1.dist-info/LICENSE,sha256=l2D8cKfFmmJq_wcVq_JElPJrlvWQOzNWx7gMLINucxc,1292
|
|
71
|
-
mapillary_tools-0.13.3a1.dist-info/METADATA,sha256=3wyt_Iv96Md1JNY358MhdTqO02bb0XKdEoDBMiP3_yw,19760
|
|
72
|
-
mapillary_tools-0.13.3a1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
73
|
-
mapillary_tools-0.13.3a1.dist-info/entry_points.txt,sha256=A3f3LP-BO_P-U8Y29QfpT4jx6Mjk3sXjTi2Yew4bvj8,75
|
|
74
|
-
mapillary_tools-0.13.3a1.dist-info/top_level.txt,sha256=FbDkMgOrt1S70ho1WSBrOwzKOSkJFDwwqFOoY5-527s,16
|
|
75
|
-
mapillary_tools-0.13.3a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|