def get_video_info(self, node): '''获取视频文件信息''' try: video = MediaFile.VideoFile() path = node.PathWithMountPoint video.FileName = os.path.basename(path) video.Path = node.AbsolutePath video.Size = os.path.getsize(path) addTime = os.path.getctime(path) video.FileSuffix = re.sub('.*\.', '', node.AbsolutePath) video.MimeType = 'video' video.AddTime = self._get_timestamp(addTime) return video except: pass
def _get_model_media(self): model = [] try: self.db_cmd.CommandText = '''select distinct * from media order by deleted ASC''' sr = self.db_cmd.ExecuteReader() pk = [] while(sr.Read()): try: if canceller.IsCancellationRequested: break if sr[1] is None or sr[6] is None: continue if sr[0] is None or sr[0] == 0: continue media_type = sr[6] media_id = sr[0] deleted = sr[19] #remove duplication if media_id in pk: continue else: pk.append(media_id) #audio convert if media_type == "audio": audio = MediaFile.AudioFile() audio.FileName = self._db_reader_get_string_value(sr, 7) audio.Path = self._db_reader_get_string_value(sr, 1) #audio.NodeOrUrl.Init(path) audio.Size = self._db_reader_get_int_value(sr, 2) addTime = self._db_reader_get_int_value(sr, 3) audio.AddTime = self._get_timestamp(addTime) audio.Description = self._db_reader_get_string_value(sr, 17) media_log = self._get_media_log(sr[0]) for log in media_log: video.Logs.Add(log) modifyTime = self._db_reader_get_int_value(sr, 4) audio.FileSuffix = self._db_reader_get_string_value(sr, 5) audio.MimeType = self._db_reader_get_string_value(sr, 5) audio.ModifyTime = self._get_timestamp(modifyTime) audio.Album = self._db_reader_get_string_value(sr, 14) audio.Artist = self._db_reader_get_string_value(sr, 13) if not IsDBNull(sr[12]): hours = int(sr[12])/3600 minutes = (int(sr[12])-hours*3600)/60 seconds = int(sr[12])-hours*3600-minutes*60 audio.Duration = System.TimeSpan(hours, minutes, seconds) #image convert elif media_type == "image": image = MediaFile.ImageFile() image.FileName = self._db_reader_get_string_value(sr, 7) image.Path = self._db_reader_get_string_value(sr, 1) #image.NodeOrUrl.Init(path) image.Size = self._db_reader_get_int_value(sr, 2) addTime = self._db_reader_get_int_value(sr, 3) image.FileSuffix = self._db_reader_get_string_value(sr, 5) image.MimeType = self._db_reader_get_string_value(sr, 5) image.AddTime = self._get_timestamp(addTime) image.Description = self._db_reader_get_string_value(sr, 17) location = Base.Location(image) coordinate = Base.Coordinate() if not IsDBNull(sr[8]): coordinate.Latitude = float(sr[8]) if not IsDBNull(sr[9]): coordinate.Longitude = float(sr[9]) coordinate.Type = CoordinateType.Google if self.coordinate_type == COORDINATE_TYPE_GOOGLE else CoordinateType.GPS location.Coordinate = coordinate location.Time = image.AddTime location.AddressName = self._db_reader_get_string_value(sr, 10) location.SourceType = LocationSourceType.Media image.Location = location media_log = self._get_media_log(sr[0]) for log in media_log: image.Logs.Add(log) modifyTime = self._db_reader_get_int_value(sr, 4) image.ModifyTime = self._get_timestamp(modifyTime) image.Height = self._db_reader_get_int_value(sr, 16) image.Width = self._db_reader_get_int_value(sr, 15) takenDate = self._db_reader_get_int_value(sr, 11) image.TakenDate = self._get_timestamp(takenDate) image.Thumbnail = self._get_media_thumbnail(media_id) image.Aperture = self._db_reader_get_string_value(sr,18) image.Artist = self._db_reader_get_string_value(sr,13) image.ColorSpace = self._db_reader_get_string_value(sr,19) image.ExifVersion = self._db_reader_get_string_value(sr,20) image.ExposureProgram = self._db_reader_get_string_value(sr,21) image.ExposureTime = self._db_reader_get_string_value(sr,22) image.FocalLength = self._db_reader_get_string_value(sr,23) image.ISO = self._db_reader_get_string_value(sr,24) image.Make = self._db_reader_get_string_value(sr,25) image.Model = self._db_reader_get_string_value(sr,26) image.Resolution = self._db_reader_get_string_value(sr,27) image.Software = self._db_reader_get_string_value(sr,28) image.XResolution = self._db_reader_get_string_value(sr,29) if image.XResolution is not '': image.XResolution = image.XResolution + ' dpi' image.YResolution = self._db_reader_get_string_value(sr,30) if image.YResolution is not '': image.YResolution = image.YResolution + ' dpi' image.SourceFile = self._get_source_file(str(sr[31])) image.Deleted = self._convert_deleted_status(sr[32]) #location = Base.Location(image) #coordinate = Base.Coordinate() #if not IsDBNull(sr[8]): # coordinate.Latitude = float(sr[8]) #if not IsDBNull(sr[9]): # coordinate.Longitude = float(sr[9]) # coordinate.Type = CoordinateType.Google if self.coordinate_type == COORDINATE_TYPE_GOOGLE else CoordinateType.GPS #location.Coordinate = coordinate #location.Time = image.AddTime #location.AddressName = self._db_reader_get_string_value(sr, 10) if not IsDBNull(sr[9]): model.append(location) model.append(image) #video convert elif media_type == "video": video = MediaFile.VideoFile() video.FileName = self._db_reader_get_string_value(sr, 7) video.Path = self._db_reader_get_string_value(sr, 1) #video.NodeOrUrl.Init(path) video.Size = self._db_reader_get_int_value(sr, 2) addTime = self._db_reader_get_int_value(sr, 3) video.FileSuffix = self._db_reader_get_string_value(sr, 5) video.MimeType = self._db_reader_get_string_value(sr, 5) video.AddTime = self._get_timestamp(addTime) video.Description = self._db_reader_get_string_value(sr, 17) location = Base.Location(video) coordinate = Base.Coordinate() if not IsDBNull(sr[8]): coordinate.Latitude = float(sr[8]) if not IsDBNull(sr[9]): coordinate.Longitude = float(sr[9]) coordinate.Type = CoordinateType.Google if self.coordinate_type == COORDINATE_TYPE_GOOGLE else CoordinateType.GPS location.Coordinate = coordinate location.Time = video.AddTime location.AddressName = self._db_reader_get_string_value(sr, 10) location.SourceType = LocationSourceType.Media video.Location = location media_log = self._get_media_log(sr[0]) for log in media_log: video.Logs.Add(log) modifyTime = self._db_reader_get_int_value(sr, 4) takenDate = self._db_reader_get_int_value(sr, 11) video.TakenDate = self._get_timestamp(takenDate) video.ModifyTime = self._get_timestamp(modifyTime) if not IsDBNull(sr[12]): hours = int(sr[12])/3600 minutes = (int(sr[12])-hours*3600)/60 seconds = int(sr[12])-hours*3600-minutes*60 video.Duration = System.TimeSpan(hours, minutes, seconds) video.SourceFile = self._get_source_file(str(sr[31])) video.Deleted = self._convert_deleted_status(sr[32]) #location = Base.Location(video) #coordinate = Base.Coordinate() #if not IsDBNull(sr[8]): # coordinate.Latitude = float(sr[8]) #if not IsDBNull(sr[9]): # coordinate.Longitude = float(sr[9]) # coordinate.Type = CoordinateType.Google if self.coordinate_type == COORDINATE_TYPE_GOOGLE else CoordinateType.GPS #location.Coordinate = coordinate #location.Time = video.AddTime #location.AddressName = self._db_reader_get_string_value(sr, 10) if not IsDBNull(sr[9]): model.append(location) model.append(video) except: traceback.print_exc() sr.Close() except: pass return model