Skip to content

Commit 2cad74e

Browse files
committed
Add file sizes to output
1 parent d095726 commit 2cad74e

File tree

8 files changed

+42
-1
lines changed

8 files changed

+42
-1
lines changed

mapillary_tools/geotag/geotag_images_from_exif.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from tqdm import tqdm
88

9+
from mapillary_tools import utils
910
from .. import exceptions, exif_write, geo, types
1011
from ..exif_read import ExifRead, ExifReadABC
1112
from .geotag_from_generic import GeotagImagesFromGeneric
@@ -64,6 +65,7 @@ def build_image_metadata(
6465
image_metadata = types.ImageMetadata(
6566
filename=image_path,
6667
md5sum=None,
68+
size=utils.get_file_size(image_path),
6769
time=geo.as_unix_time(capture_time),
6870
lat=lat,
6971
lon=lon,

mapillary_tools/geotag/geotag_videos_from_exiftool_video.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from tqdm import tqdm
88

9+
from mapillary_tools import utils
910
from .. import exceptions, exiftool_read, geo, types
1011
from ..exiftool_read_video import ExifToolReadVideo
1112
from ..telemetry import GPSPoint
@@ -66,6 +67,7 @@ def geotag_video(element: ET.Element) -> types.VideoMetadataOrError:
6667
video_metadata = types.VideoMetadata(
6768
video_path,
6869
md5sum=None,
70+
size=utils.get_file_size(video_path),
6971
filetype=types.FileType.VIDEO,
7072
points=points,
7173
make=exif.extract_make(),

mapillary_tools/geotag/geotag_videos_from_video.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from multiprocessing import Pool
55
from pathlib import Path
66

7+
from mapillary_tools import utils
8+
79
from tqdm import tqdm
810

911
from .. import exceptions, geo, types
@@ -82,6 +84,7 @@ def _extract_video_metadata(
8284
return types.VideoMetadata(
8385
filename=video_path,
8486
md5sum=None,
87+
size=utils.get_file_size(video_path),
8588
filetype=types.FileType.CAMM,
8689
points=points,
8790
make=make,
@@ -105,6 +108,7 @@ def _extract_video_metadata(
105108
return types.VideoMetadata(
106109
filename=video_path,
107110
md5sum=None,
111+
size=utils.get_file_size(video_path),
108112
filetype=types.FileType.GOPRO,
109113
points=T.cast(T.List[geo.Point], points_with_fix),
110114
make=make,
@@ -128,6 +132,7 @@ def _extract_video_metadata(
128132
return types.VideoMetadata(
129133
filename=video_path,
130134
md5sum=None,
135+
size=utils.get_file_size(video_path),
131136
filetype=types.FileType.BLACKVUE,
132137
points=points,
133138
make=make,

mapillary_tools/process_geotag_properties.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,19 +424,22 @@ def _show_stats_per_filetype(
424424
skipped_process_errors: T.Set[T.Type[Exception]],
425425
):
426426
good_metadatas: T.List[T.Union[types.VideoMetadata, types.ImageMetadata]] = []
427+
size_to_upload = 0
427428
error_metadatas: T.List[types.ErrorMetadata] = []
428429
for metadata in metadatas:
429430
if isinstance(metadata, types.ErrorMetadata):
430431
error_metadatas.append(metadata)
431432
else:
432433
good_metadatas.append(metadata)
434+
size_to_upload += metadata.size
433435

434436
LOG.info("%8d %s(s) read in total", len(metadatas), filetype.value)
435437
if good_metadatas:
436438
LOG.info(
437-
"\t %8d %s(s) are ready to be uploaded",
439+
"\t %8d %s(s) (%s MB) are ready to be uploaded",
438440
len(good_metadatas),
439441
filetype.value,
442+
round(size_to_upload / 1024 / 1024, 1),
440443
)
441444

442445
error_counter = collections.Counter(

mapillary_tools/types.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class ImageMetadata(geo.Point):
5656
MAPMetaTags: T.Optional[T.Dict] = None
5757
# deprecated since v0.10.0; keep here for compatibility
5858
MAPFilename: T.Optional[str] = None
59+
size: T.Optional[int] = None
5960

6061
def update_md5sum(self, image_data: T.Optional[T.BinaryIO] = None) -> None:
6162
if self.md5sum is None:
@@ -81,6 +82,7 @@ class VideoMetadata:
8182
points: T.Sequence[geo.Point]
8283
make: T.Optional[str] = None
8384
model: T.Optional[str] = None
85+
size: T.Optional[int] = None
8486

8587
def update_md5sum(self) -> None:
8688
if self.md5sum is None:
@@ -143,6 +145,7 @@ class ImageDescription(_SequenceOnly, _Image, MetaProperties, total=True):
143145
# if None or absent, it will be calculated
144146
md5sum: T.Optional[str]
145147
filetype: Literal["image"]
148+
size: T.Optional[int]
146149

147150

148151
class _VideoDescriptionRequired(TypedDict, total=True):
@@ -156,6 +159,7 @@ class _VideoDescriptionRequired(TypedDict, total=True):
156159
class VideoDescription(_VideoDescriptionRequired, total=False):
157160
MAPDeviceMake: str
158161
MAPDeviceModel: str
162+
size: T.Optional[int]
159163

160164

161165
class _ErrorDescription(TypedDict, total=False):
@@ -368,6 +372,10 @@ def merge_schema(*schemas: T.Dict) -> T.Dict:
368372
"type": ["string", "null"],
369373
"description": "MD5 checksum of the image content. If not provided, the uploader will compute it",
370374
},
375+
"size": {
376+
"type": ["number", "null"],
377+
"description": "File size",
378+
},
371379
"filetype": {
372380
"type": "string",
373381
"enum": [FileType.IMAGE.value],
@@ -394,6 +402,10 @@ def merge_schema(*schemas: T.Dict) -> T.Dict:
394402
"type": ["string", "null"],
395403
"description": "MD5 checksum of the video content. If not provided, the uploader will compute it",
396404
},
405+
"size": {
406+
"type": ["number", "null"],
407+
"description": "File size",
408+
},
397409
"filetype": {
398410
"type": "string",
399411
"enum": [
@@ -484,6 +496,7 @@ def _as_video_desc(metadata: VideoMetadata) -> VideoDescription:
484496
"filename": str(metadata.filename.resolve()),
485497
"md5sum": metadata.md5sum,
486498
"filetype": metadata.filetype.value,
499+
"size": metadata.size,
487500
"MAPGPSTrack": [_encode_point(p) for p in metadata.points],
488501
}
489502
if metadata.make:
@@ -497,6 +510,7 @@ def _as_image_desc(metadata: ImageMetadata) -> ImageDescription:
497510
desc: ImageDescription = {
498511
"filename": str(metadata.filename.resolve()),
499512
"md5sum": metadata.md5sum,
513+
"size": metadata.size,
500514
"filetype": FileType.IMAGE.value,
501515
"MAPLatitude": round(metadata.lat, _COORDINATES_PRECISION),
502516
"MAPLongitude": round(metadata.lon, _COORDINATES_PRECISION),
@@ -542,6 +556,7 @@ def _from_image_desc(desc) -> ImageMetadata:
542556
if k not in [
543557
"filename",
544558
"md5sum",
559+
"size",
545560
"filetype",
546561
"MAPLatitude",
547562
"MAPLongitude",
@@ -554,6 +569,7 @@ def _from_image_desc(desc) -> ImageMetadata:
554569
return ImageMetadata(
555570
filename=Path(desc["filename"]),
556571
md5sum=desc.get("md5sum"),
572+
size=desc.get("size"),
557573
lat=desc["MAPLatitude"],
558574
lon=desc["MAPLongitude"],
559575
alt=desc.get("MAPAltitude"),
@@ -585,6 +601,7 @@ def _from_video_desc(desc: VideoDescription) -> VideoMetadata:
585601
return VideoMetadata(
586602
filename=Path(desc["filename"]),
587603
md5sum=desc["md5sum"],
604+
size=desc["size"],
588605
filetype=FileType(desc["filetype"]),
589606
points=[_decode_point(entry) for entry in desc["MAPGPSTrack"]],
590607
make=desc.get("MAPDeviceMake"),

mapillary_tools/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,3 +201,6 @@ def find_xml_files(import_paths: T.Sequence[Path]) -> T.List[Path]:
201201
else:
202202
xml_paths.append(path)
203203
return list(deduplicate_paths(xml_paths))
204+
205+
def get_file_size(path: Path) -> int:
206+
return os.path.getsize(path)

mapillary_tools/video_data_extraction/extract_video_data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def process_file(self, file: Path) -> VideoMetadataOrError:
9494
filename=file,
9595
filetype=FileType.VIDEO,
9696
md5sum=None,
97+
size=utils.get_file_size(file),
9798
points=points,
9899
make=make,
99100
model=model,

schema/image_description_schema.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@
6666
"video"
6767
],
6868
"description": "The video file type"
69+
},
70+
"size": {
71+
"type": "number",
72+
"description": "File size"
6973
}
7074
},
7175
"required": [
@@ -160,6 +164,10 @@
160164
"image"
161165
],
162166
"description": "The image file type"
167+
},
168+
"size": {
169+
"type": "number",
170+
"description": "File size"
163171
}
164172
},
165173
"required": [

0 commit comments

Comments
 (0)