Small fix for video timestamps, refactored PhotoaAlbum.py & added reference for xwipe
This commit is contained in:
		@ -201,7 +201,9 @@ class Photo(object):
 | 
				
			|||||||
                value = value[0]
 | 
					                value = value[0]
 | 
				
			||||||
            if isinstance(value, str) or isinstance(value, unicode):
 | 
					            if isinstance(value, str) or isinstance(value, unicode):
 | 
				
			||||||
                value = value.strip().partition("\x00")[0]
 | 
					                value = value.strip().partition("\x00")[0]
 | 
				
			||||||
                if (isinstance(decoded, str) or isinstance(decoded, unicode)) and decoded.startswith("DateTime"):
 | 
					                if ((isinstance(decoded, str) or
 | 
				
			||||||
 | 
					                     isinstance(decoded, unicode)) and
 | 
				
			||||||
 | 
					                        decoded.startswith("DateTime")):
 | 
				
			||||||
                    try:
 | 
					                    try:
 | 
				
			||||||
                        value = datetime.strptime(value, '%Y:%m:%d %H:%M:%S')
 | 
					                        value = datetime.strptime(value, '%Y:%m:%d %H:%M:%S')
 | 
				
			||||||
                    except KeyboardInterrupt:
 | 
					                    except KeyboardInterrupt:
 | 
				
			||||||
@ -210,15 +212,17 @@ class Photo(object):
 | 
				
			|||||||
                        continue
 | 
					                        continue
 | 
				
			||||||
            exif[decoded] = value
 | 
					            exif[decoded] = value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _pm = self._photo_metadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if "Orientation" in exif:
 | 
					        if "Orientation" in exif:
 | 
				
			||||||
            self._orientation = exif["Orientation"]
 | 
					            self._orientation = exif["Orientation"]
 | 
				
			||||||
            if self._orientation in range(5, 9):
 | 
					            if self._orientation in range(5, 9):
 | 
				
			||||||
                self._attributes["size"] = (
 | 
					                self._attributes["size"] = (
 | 
				
			||||||
                    self._attributes["size"][1], self._attributes["size"][0])
 | 
					                    self._attributes["size"][1], self._attributes["size"][0])
 | 
				
			||||||
            if self._orientation - 1 < len(
 | 
					            if self._orientation - 1 < len(
 | 
				
			||||||
                    self._photo_metadata.orientation_list):
 | 
					                    _pm.orientation_list):
 | 
				
			||||||
                self._attributes["orientation"] = (
 | 
					                self._attributes["orientation"] = (
 | 
				
			||||||
                    self._photo_metadata.orientation_list[
 | 
					                    _pm.orientation_list[
 | 
				
			||||||
                        self._orientation - 1])
 | 
					                        self._orientation - 1])
 | 
				
			||||||
        if "Make" in exif:
 | 
					        if "Make" in exif:
 | 
				
			||||||
            self._attributes["make"] = exif["Make"]
 | 
					            self._attributes["make"] = exif["Make"]
 | 
				
			||||||
@ -238,46 +242,63 @@ class Photo(object):
 | 
				
			|||||||
            self._attributes["iso"] = exif["PhotographicSensitivity"]
 | 
					            self._attributes["iso"] = exif["PhotographicSensitivity"]
 | 
				
			||||||
        if "ExposureTime" in exif:
 | 
					        if "ExposureTime" in exif:
 | 
				
			||||||
            self._attributes["exposureTime"] = exif["ExposureTime"]
 | 
					            self._attributes["exposureTime"] = exif["ExposureTime"]
 | 
				
			||||||
        if "Flash" in exif and exif["Flash"] in self._photo_metadata.flash_dictionary:
 | 
					        if exif.get("Flash") in _pm.flash_dictionary:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self._attributes["flash"] = self._photo_metadata.flash_dictionary[exif["Flash"]]
 | 
					                self._attributes["flash"] = _pm.flash_dictionary[exif["Flash"]]
 | 
				
			||||||
            except KeyboardInterrupt:
 | 
					            except KeyboardInterrupt:
 | 
				
			||||||
                raise
 | 
					                raise
 | 
				
			||||||
            except:
 | 
					            except:
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
        if "LightSource" in exif and exif["LightSource"] in self._photo_metadata.light_source_dictionary:
 | 
					        if exif.get("LightSource") in _pm.light_source_dictionary:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self._attributes["lightSource"] = self._photo_metadata.light_source_dictionary[exif["LightSource"]]
 | 
					                self._attributes["lightSource"] = _pm.light_source_dictionary[
 | 
				
			||||||
 | 
					                    exif["LightSource"]]
 | 
				
			||||||
            except KeyboardInterrupt:
 | 
					            except KeyboardInterrupt:
 | 
				
			||||||
                raise
 | 
					                raise
 | 
				
			||||||
            except:
 | 
					            except:
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
        if "ExposureProgram" in exif and exif["ExposureProgram"] < len(self._photo_metadata.exposure_list):
 | 
					        if "ExposureProgram" in exif and exif["ExposureProgram"] < len(
 | 
				
			||||||
            self._attributes["exposureProgram"] = self._photo_metadata.exposure_list[exif["ExposureProgram"]]
 | 
					                _pm.exposure_list):
 | 
				
			||||||
 | 
					            self._attributes["exposureProgram"] = _pm.exposure_list[
 | 
				
			||||||
 | 
					                exif["ExposureProgram"]]
 | 
				
			||||||
        if "SpectralSensitivity" in exif:
 | 
					        if "SpectralSensitivity" in exif:
 | 
				
			||||||
            self._attributes["spectralSensitivity"] = exif["SpectralSensitivity"]
 | 
					            self._attributes["spectralSensitivity"] = exif[
 | 
				
			||||||
        if "MeteringMode" in exif and exif["MeteringMode"] < len(self._photo_metadata.metering_list):
 | 
					                "SpectralSensitivity"]
 | 
				
			||||||
            self._attributes["meteringMode"] = self._photo_metadata.metering_list[exif["MeteringMode"]]
 | 
					        if "MeteringMode" in exif and exif["MeteringMode"] < len(
 | 
				
			||||||
        if "SensingMethod" in exif and exif["SensingMethod"] < len(self._photo_metadata.sensing_method_list):
 | 
					                _pm.metering_list):
 | 
				
			||||||
            self._attributes["sensingMethod"] = self._photo_metadata.sensing_method_list[exif["SensingMethod"]]
 | 
					            self._attributes["meteringMode"] = _pm.metering_list[
 | 
				
			||||||
        if "SceneCaptureType" in exif and exif["SceneCaptureType"] < len(self._photo_metadata.scene_capture_type_list):
 | 
					                exif["MeteringMode"]]
 | 
				
			||||||
            self._attributes["sceneCaptureType"] = self._photo_metadata.scene_capture_type_list[exif["SceneCaptureType"]]
 | 
					        if "SensingMethod" in exif and exif["SensingMethod"] < len(
 | 
				
			||||||
        if "SubjectDistanceRange" in exif and exif["SubjectDistanceRange"] < len(self._photo_metadata.subject_distance_range_list):
 | 
					                _pm.sensing_method_list):
 | 
				
			||||||
            self._attributes["subjectDistanceRange"] = self._photo_metadata.subject_distance_range_list[exif["SubjectDistanceRange"]]
 | 
					            self._attributes["sensingMethod"] = _pm.sensing_method_list[
 | 
				
			||||||
 | 
					                exif["SensingMethod"]]
 | 
				
			||||||
 | 
					        if "SceneCaptureType" in exif and exif["SceneCaptureType"] < len(
 | 
				
			||||||
 | 
					                _pm.scene_capture_type_list):
 | 
				
			||||||
 | 
					            self._attributes["sceneCaptureType"] = _pm.scene_capture_type_list[
 | 
				
			||||||
 | 
					                exif["SceneCaptureType"]]
 | 
				
			||||||
 | 
					        if "SubjectDistanceRange" in exif and exif[
 | 
				
			||||||
 | 
					                "SubjectDistanceRange"] < len(_pm.subject_distance_range_list):
 | 
				
			||||||
 | 
					            self._attributes[
 | 
				
			||||||
 | 
					                "subjectDistanceRange"] = _pm.subject_distance_range_list[
 | 
				
			||||||
 | 
					                    exif["SubjectDistanceRange"]]
 | 
				
			||||||
        if "ExposureCompensation" in exif:
 | 
					        if "ExposureCompensation" in exif:
 | 
				
			||||||
            self._attributes["exposureCompensation"] = exif["ExposureCompensation"]
 | 
					            self._attributes["exposureCompensation"] = exif[
 | 
				
			||||||
 | 
					                "ExposureCompensation"]
 | 
				
			||||||
        if "ExposureBiasValue" in exif:
 | 
					        if "ExposureBiasValue" in exif:
 | 
				
			||||||
            self._attributes["exposureCompensation"] = exif["ExposureBiasValue"]
 | 
					            self._attributes["exposureCompensation"] = exif[
 | 
				
			||||||
 | 
					                "ExposureBiasValue"]
 | 
				
			||||||
        if "DateTimeOriginal" in exif:
 | 
					        if "DateTimeOriginal" in exif:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self._attributes["dateTimeOriginal"] = datetime.strptime(exif["DateTimeOriginal"], '%Y:%m:%d %H:%M:%S')
 | 
					                self._attributes["dateTimeOriginal"] = datetime.strptime(
 | 
				
			||||||
 | 
					                    exif["DateTimeOriginal"], '%Y:%m:%d %H:%M:%S')
 | 
				
			||||||
            except KeyboardInterrupt:
 | 
					            except KeyboardInterrupt:
 | 
				
			||||||
                raise
 | 
					                raise
 | 
				
			||||||
            except TypeError:
 | 
					            except TypeError:
 | 
				
			||||||
                self._attributes["dateTimeOriginal"] = exif["DateTimeOriginal"]
 | 
					                self._attributes["dateTimeOriginal"] = exif["DateTimeOriginal"]
 | 
				
			||||||
        if "DateTime" in exif:
 | 
					        if "DateTime" in exif:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self._attributes["dateTime"] = datetime.strptime(exif["DateTime"], '%Y:%m:%d %H:%M:%S')
 | 
					                self._attributes["dateTime"] = datetime.strptime(
 | 
				
			||||||
 | 
					                    exif["DateTime"], '%Y:%m:%d %H:%M:%S')
 | 
				
			||||||
            except KeyboardInterrupt:
 | 
					            except KeyboardInterrupt:
 | 
				
			||||||
                raise
 | 
					                raise
 | 
				
			||||||
            except TypeError:
 | 
					            except TypeError:
 | 
				
			||||||
@ -432,6 +453,13 @@ class Photo(object):
 | 
				
			|||||||
                raise
 | 
					                raise
 | 
				
			||||||
            except TypeError:
 | 
					            except TypeError:
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
 | 
					            except ValueError:
 | 
				
			||||||
 | 
					                try:
 | 
				
			||||||
 | 
					                    self._attributes["dateTimeVideo"] = datetime.strptime(
 | 
				
			||||||
 | 
					                        info['format']['tags']['creation_time'],
 | 
				
			||||||
 | 
					                        '%Y-%m-%d %H:%M:%S.%fZ')
 | 
				
			||||||
 | 
					                except ValueError:
 | 
				
			||||||
 | 
					                    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _photo_thumbnail(self, original_path, thumb_path, size, square=False):
 | 
					    def _photo_thumbnail(self, original_path, thumb_path, size, square=False):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,9 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Xwiper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Provided by https://github.com/uxitten/xwiper/
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
 | 
					var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user