def assign_photo_attributes(self, metadata: GExiv2.Metadata) -> None: # I don't know how GExiv2 gets these values: self.width = metadata.get_pixel_width() self.height = metadata.get_pixel_height() try: self.orientation = metadata.get_tag_string('Exif.Image.Orientation') except KeyError: pass if metadata.has_tag('Exif.Image.Make') and metadata.has_tag('Exif.Image.Model'): self.model = '{} {}'.format( metadata.get_tag_string('Exif.Image.Make').strip(), metadata.get_tag_string('Exif.Image.Model').strip() ) self.has_gps = metadata.get_gps_info()[0] self.iso = metadata.get_iso_speed() self.datetime = photo_date_time(metadata)