コード例 #1
0
 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
コード例 #2
0
 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