@@ -57,6 +57,7 @@ class ImageMetadata(geo.Point):
5757 MAPMetaTags : T .Optional [T .Dict ] = None
5858 # deprecated since v0.10.0; keep here for compatibility
5959 MAPFilename : T .Optional [str ] = None
60+ filesize : T .Optional [int ] = None
6061
6162 def update_md5sum (self , image_data : T .Optional [T .BinaryIO ] = None ) -> None :
6263 if self .md5sum is None :
@@ -82,6 +83,7 @@ class VideoMetadata:
8283 points : T .Sequence [geo .Point ]
8384 make : T .Optional [str ] = None
8485 model : T .Optional [str ] = None
86+ filesize : T .Optional [int ] = None
8587
8688 def update_md5sum (self ) -> None :
8789 if self .md5sum is None :
@@ -144,6 +146,7 @@ class ImageDescription(_SequenceOnly, _Image, MetaProperties, total=True):
144146 # if None or absent, it will be calculated
145147 md5sum : T .Optional [str ]
146148 filetype : Literal ["image" ]
149+ filesize : T .Optional [int ]
147150
148151
149152class _VideoDescriptionRequired (TypedDict , total = True ):
@@ -157,6 +160,7 @@ class _VideoDescriptionRequired(TypedDict, total=True):
157160class VideoDescription (_VideoDescriptionRequired , total = False ):
158161 MAPDeviceMake : str
159162 MAPDeviceModel : str
163+ filesize : T .Optional [int ]
160164
161165
162166class _ErrorDescription (TypedDict , total = False ):
@@ -369,6 +373,10 @@ def merge_schema(*schemas: T.Dict) -> T.Dict:
369373 "type" : ["string" , "null" ],
370374 "description" : "MD5 checksum of the image content. If not provided, the uploader will compute it" ,
371375 },
376+ "filesize" : {
377+ "type" : ["number" , "null" ],
378+ "description" : "File size" ,
379+ },
372380 "filetype" : {
373381 "type" : "string" ,
374382 "enum" : [FileType .IMAGE .value ],
@@ -395,6 +403,10 @@ def merge_schema(*schemas: T.Dict) -> T.Dict:
395403 "type" : ["string" , "null" ],
396404 "description" : "MD5 checksum of the video content. If not provided, the uploader will compute it" ,
397405 },
406+ "filesize" : {
407+ "type" : ["number" , "null" ],
408+ "description" : "File size" ,
409+ },
398410 "filetype" : {
399411 "type" : "string" ,
400412 "enum" : [
@@ -485,6 +497,7 @@ def _as_video_desc(metadata: VideoMetadata) -> VideoDescription:
485497 "filename" : str (metadata .filename .resolve ()),
486498 "md5sum" : metadata .md5sum ,
487499 "filetype" : metadata .filetype .value ,
500+ "filesize" : metadata .filesize ,
488501 "MAPGPSTrack" : [_encode_point (p ) for p in metadata .points ],
489502 }
490503 if metadata .make :
@@ -498,6 +511,7 @@ def _as_image_desc(metadata: ImageMetadata) -> ImageDescription:
498511 desc : ImageDescription = {
499512 "filename" : str (metadata .filename .resolve ()),
500513 "md5sum" : metadata .md5sum ,
514+ "filesize" : metadata .filesize ,
501515 "filetype" : FileType .IMAGE .value ,
502516 "MAPLatitude" : round (metadata .lat , _COORDINATES_PRECISION ),
503517 "MAPLongitude" : round (metadata .lon , _COORDINATES_PRECISION ),
@@ -543,6 +557,7 @@ def _from_image_desc(desc) -> ImageMetadata:
543557 if k not in [
544558 "filename" ,
545559 "md5sum" ,
560+ "filesize" ,
546561 "filetype" ,
547562 "MAPLatitude" ,
548563 "MAPLongitude" ,
@@ -555,6 +570,7 @@ def _from_image_desc(desc) -> ImageMetadata:
555570 return ImageMetadata (
556571 filename = Path (desc ["filename" ]),
557572 md5sum = desc .get ("md5sum" ),
573+ filesize = desc .get ("filesize" ),
558574 lat = desc ["MAPLatitude" ],
559575 lon = desc ["MAPLongitude" ],
560576 alt = desc .get ("MAPAltitude" ),
@@ -586,6 +602,7 @@ def _from_video_desc(desc: VideoDescription) -> VideoMetadata:
586602 return VideoMetadata (
587603 filename = Path (desc ["filename" ]),
588604 md5sum = desc ["md5sum" ],
605+ filesize = desc ["filesize" ],
589606 filetype = FileType (desc ["filetype" ]),
590607 points = [_decode_point (entry ) for entry in desc ["MAPGPSTrack" ]],
591608 make = desc .get ("MAPDeviceMake" ),
0 commit comments