Exemplo n.º 1
0
 def write(self):
     """Save exif data to photo file on disk."""
     self.exif.set_gps_info(self.longitude, self.latitude, self.altitude)
     self.exif[IPTC + 'City'] = self.names[0] or ''
     self.exif[IPTC + 'ProvinceState'] = self.names[1] or ''
     self.exif[IPTC + 'CountryName'] = self.names[2] or ''
     self.exif['Iptc.Envelope.CharacterSet'] = '\x1b%G'
     self.exif.save_file()
     modified.discard(self)
     Widgets.loaded_photos.set_value(self.iter, 1, str(self))
Exemplo n.º 2
0
 def write(self):
     """Save exif data to photo file on disk."""
     self.exif.set_gps_info(self.longitude, self.latitude, self.altitude)
     self.exif[IPTC + 'City']          = self.names[0] or ''
     self.exif[IPTC + 'ProvinceState'] = self.names[1] or ''
     self.exif[IPTC + 'CountryName']   = self.names[2] or ''
     self.exif['Iptc.Envelope.CharacterSet'] = '\x1b%G'
     self.exif.save_file()
     modified.discard(self)
     Widgets.loaded_photos.set_value(self.iter, 1, str(self))
Exemplo n.º 3
0
 def destroy(self):
     """Agony!"""
     self.update_derived_properties()  # To clear any callback...
     # TODO: Disconnect this from here
     if self in Label.cache:
         Label(self).destroy()
     if self.camera is not None:
         self.camera.remove_photo(self)
     modified.discard(self)
     if self.iter:
         Widgets.loaded_photos.remove(self.iter)
     del Photograph.cache[self.filename]
Exemplo n.º 4
0
 def destroy(self):
     """Agony!"""
     self.update_derived_properties() # To clear any callback...
     # TODO: Disconnect this from here
     if self in Label.cache:
         Label(self).destroy()
     if self.camera is not None:
         self.camera.remove_photo(self)
     modified.discard(self)
     if self.iter:
         Widgets.loaded_photos.remove(self.iter)
     del Photograph.cache[self.filename]
Exemplo n.º 5
0
    def read(self):
        """Discard all state and (re)initialize from disk."""
        self.exif = GExiv2.Metadata(self.filename)
        self.manual = False
        self.modified_timeout = None
        self.latitude = 0.0
        self.longitude = 0.0
        self.altitude = 0.0
        self.timestamp = 0

        self.names = (None, None, None)
        self.geotimezone = ''

        for tag in ('Exif.Photo.DateTimeOriginal',
                    'Exif.Image.DateTimeOriginal',
                    'Exif.Photo.DateTime',
                    'Exif.Image.DateTime'):
            with ignored(TypeError, AttributeError, ValueError):
                self.orig_time = datetime.strptime(
                    self.exif.get(tag),
                    '%Y:%m:%d %H:%M:%S').timetuple()
                break

        self.longitude, self.latitude, self.altitude = self.exif.get_gps_info()

        modified.discard(self)
        self.calculate_timestamp()

        if self.iter is None:
            self.iter = Widgets.loaded_photos.append()
        Widgets.loaded_photos.set_row(self.iter, [self.filename,
                                                  str(self),
                                                  self.thumb,
                                                  self.timestamp])

        # Get the camera info
        self.camera_info = {'Make': '', 'Model': ''}
        keys = ['Exif.Image.' + key for key in list(self.camera_info.keys()) +
                ['CameraSerialNumber']] + ['Exif.Photo.BodySerialNumber']
        for key in keys:
            with ignored(KeyError):
                self.camera_info.update(
                    {key.split('.')[-1]: self.exif[key]})
Exemplo n.º 6
0
    def read(self):
        """Discard all state and (re)initialize from disk."""
        self.exif = GExiv2.Metadata(self.filename)
        self.manual = False
        self.modified_timeout = None
        self.latitude = 0.0
        self.longitude = 0.0
        self.altitude = 0.0
        self.timestamp = 0

        self.names = (None, None, None)
        self.geotimezone = ''

        for tag in ('Exif.Photo.DateTimeOriginal',
                    'Exif.Image.DateTimeOriginal', 'Exif.Photo.DateTime',
                    'Exif.Image.DateTime'):
            with ignored(TypeError, AttributeError, ValueError):
                self.orig_time = datetime.strptime(
                    self.exif.get(tag), '%Y:%m:%d %H:%M:%S').timetuple()
                break

        self.longitude, self.latitude, self.altitude = self.exif.get_gps_info()

        modified.discard(self)
        self.calculate_timestamp()

        if self.iter is None:
            self.iter = Widgets.loaded_photos.append()
        Widgets.loaded_photos.set_row(
            self.iter, [self.filename,
                        str(self), self.thumb, self.timestamp])

        # Get the camera info
        self.camera_info = {'Make': '', 'Model': ''}
        keys = [
            'Exif.Image.' + key
            for key in list(self.camera_info.keys()) + ['CameraSerialNumber']
        ] + ['Exif.Photo.BodySerialNumber']
        for key in keys:
            with ignored(KeyError):
                self.camera_info.update({key.split('.')[-1]: self.exif[key]})