def readExif(self): """ return exif data + title from the photo """ clef = {'Exif.Image.Make':'Marque', 'Exif.Image.Model':'Modele', 'Exif.Photo.DateTimeOriginal':'Heure', 'Exif.Photo.ExposureTime':'Vitesse', 'Exif.Photo.FNumber':'Ouverture', # 'Exif.Photo.DateTimeOriginal':'Heure2', 'Exif.Photo.ExposureBiasValue':'Bias', 'Exif.Photo.Flash':'Flash', 'Exif.Photo.FocalLength':'Focale', 'Exif.Photo.ISOSpeedRatings':'Iso' , # 'Exif.Image.Orientation':'Orientation' } if self.metadata is None: self.metadata = {} self.metadata["Taille"] = "%.2f %s" % smartSize(op.getsize(self.fn)) self.metadata["Titre"] = self.exif.comment try: rate = self.exif["Exif.Image.Rating"] except KeyError: self.metadata["Rate"] = 0 self.exif["Exif.Image.Rating"] = 0 else: if "value" in dir(rate): # pyexiv2 v0.2+ self.metadata["Rate"] = int(rate.value) else: # pyexiv2 v0.1 self.metadata["Rate"] = int(float(rate)) if self._pixelsX and self._pixelsY: self.metadata["Resolution"] = "%s x %s " % (self.pixelsX, self.pixelsY) else: try: self.pixelsX = self.exif["Exif.Photo.PixelXDimension"] self.pixelsY = self.exif["Exif.Photo.PixelYDimension"] except (IndexError, KeyError): pass else: if "human_value" in dir(self.pixelsX): self.pixelsX = self.pixelsX.value self.pixelsY = self.pixelsY.value self.metadata["Resolution"] = "%s x %s " % (self.pixelsX, self.pixelsY) if "Exif.Image.Orientation" in self.exif.exif_keys: self.orientation = self.exif["Exif.Image.Orientation"] if "human_value" in dir(self.orientation): self.orientation = self.orientation.value for key in clef: try: self.metadata[clef[key]] = self.exif.interpretedExifValue(key).decode(config.Coding).strip() except (IndexError, KeyError): self.metadata[clef[key]] = u"" return self.metadata.copy()
def loadVideo(self): """Load the video information and setup the GUI""" logger.debug("VideoInterface.loadVideo") self.video = Video(self.filename) self.xml.get_widget("filename").set_text(self.video.videoFile) self.xml.get_widget("model").set_text(self.video.camera.encode("UTF-8")) self.xml.get_widget("resolution").set_text("%ix%i" % (self.video.width, self.video.height)) self.xml.get_widget("size").set_text("%.2f %s" % smartSize(os.path.getsize(self.filename))) self.xml.get_widget("dateTime").set_text(self.video.timeStamp.strftime("%Y:%m:%d %Hh%Mm%Ss")) self.xml.get_widget("duration").set_text("%s s" % self.video.duration) self.xml.get_widget("video").set_text("%.1f fps\t%s\t%s" % (self.video.frameRate, self.video.videoCodec, self.video.videoBitRate)) self.xml.get_widget("audio").set_text("%i ch\t%.1fHz\t%s\t%s" % (self.video.audioChannel, self.video.audioSampleRate, self.video.audioCodec, self.video.audioBitRate)) if "INAM" in self.video.data: self.xml.get_widget("title").set_text(self.video.data["INAM"]) if "IKEY" in self.video.data: self.xml.get_widget("keyword").set_text(" ".join(self.video.data["IKEY"].split(";")))