simplify TrackDescriptors in MediaDescriptors
This commit is contained in:
@@ -8,7 +8,7 @@ class MediaDescriptor():
|
|||||||
"""This class represents the structural content of a media file including streams and metadata"""
|
"""This class represents the structural content of a media file including streams and metadata"""
|
||||||
|
|
||||||
TAGS_KEY = 'tags'
|
TAGS_KEY = 'tags'
|
||||||
TRACK_DESCRIPTORS_KEY = 'track_descriptors'
|
TRACK_DESCRIPTOR_LIST_KEY = 'track_descriptors'
|
||||||
CLEAR_TAGS_KEY = 'clear_tags'
|
CLEAR_TAGS_KEY = 'clear_tags'
|
||||||
|
|
||||||
FFPROBE_DISPOSITION_KEY = 'disposition'
|
FFPROBE_DISPOSITION_KEY = 'disposition'
|
||||||
@@ -25,18 +25,18 @@ class MediaDescriptor():
|
|||||||
else:
|
else:
|
||||||
self.__mediaTags = {}
|
self.__mediaTags = {}
|
||||||
|
|
||||||
if MediaDescriptor.TRACK_DESCRIPTORS_KEY in kwargs.keys():
|
if MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY in kwargs.keys():
|
||||||
# if type(kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY]) is not List[TrackDescriptor]: # Use List typehint for TrackDescriptor as well if it works
|
# if type(kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY]) is not List[TrackDescriptor]: # Use List typehint for TrackDescriptor as well if it works
|
||||||
# raise TypeError(f"MediaDescriptor.__init__(): Argument {MediaDescriptor.TRACK_DESCRIPTORS_KEY} is required to be of type list containing only elements of type TrackDescriptor")
|
# raise TypeError(f"MediaDescriptor.__init__(): Argument {MediaDescriptor.TRACK_DESCRIPTORS_KEY} is required to be of type list containing only elements of type TrackDescriptor")
|
||||||
|
|
||||||
if type(kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY]) is not dict: # Use List typehint for TrackDescriptor as well if it works
|
if type(kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY]) is not list: # Use List typehint for TrackDescriptor as well if it works
|
||||||
raise TypeError(f"MediaDescriptor.__init__(): Argument {MediaDescriptor.TRACK_DESCRIPTORS_KEY} is required to be of type dict")
|
raise TypeError(f"MediaDescriptor.__init__(): Argument {MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY} is required to be of type list")
|
||||||
# for d in kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY]:
|
for d in kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY]:
|
||||||
# if type(d) is not TrackDescriptor:
|
if type(d) is not TrackDescriptor:
|
||||||
# raise TypeError(f"TrackDesciptor.__init__(): All elements of argument set {MediaDescriptor.TRACK_DESCRIPTORS_KEY} is required to be of type TrackDescriptor")
|
raise TypeError(f"TrackDesciptor.__init__(): All elements of argument list {MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY} are required to be of type TrackDescriptor")
|
||||||
self.__trackDescriptors = kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY]
|
self.__trackDescriptors = kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY]
|
||||||
else:
|
else:
|
||||||
self.__trackDescriptors = set()
|
self.__trackDescriptors = []
|
||||||
|
|
||||||
if MediaDescriptor.CLEAR_TAGS_KEY in kwargs.keys():
|
if MediaDescriptor.CLEAR_TAGS_KEY in kwargs.keys():
|
||||||
if type(kwargs[MediaDescriptor.CLEAR_TAGS_KEY]) is not bool:
|
if type(kwargs[MediaDescriptor.CLEAR_TAGS_KEY]) is not bool:
|
||||||
@@ -49,23 +49,31 @@ class MediaDescriptor():
|
|||||||
@classmethod
|
@classmethod
|
||||||
def fromFfprobe(cls, formatData, streamData):
|
def fromFfprobe(cls, formatData, streamData):
|
||||||
|
|
||||||
trackDescriptors = {}
|
#trackDescriptors = {}
|
||||||
|
|
||||||
|
kwargs = {}
|
||||||
|
|
||||||
|
if MediaDescriptor.FFPROBE_TAGS_KEY in formatData.keys():
|
||||||
|
kwargs[MediaDescriptor.TAGS_KEY] = formatData[MediaDescriptor.FFPROBE_TAGS_KEY]
|
||||||
|
|
||||||
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = []
|
||||||
|
|
||||||
for streamObj in streamData:
|
for streamObj in streamData:
|
||||||
|
|
||||||
trackType = TrackType.fromLabel(streamObj[MediaDescriptor.FFPROBE_CODEC_TYPE_KEY])
|
#trackType = TrackType.fromLabel(streamObj[MediaDescriptor.FFPROBE_CODEC_TYPE_KEY])
|
||||||
|
|
||||||
if trackType != TrackType.UNKNOWN:
|
# if trackType != TrackType.UNKNOWN:
|
||||||
|
#
|
||||||
|
# if trackType.label() not in trackDescriptors.keys():
|
||||||
|
# trackDescriptors[trackType.label()] = []
|
||||||
|
#
|
||||||
|
# trackDescriptors[trackType.label()].append(TrackDescriptor.fromFfprobe(streamObj))
|
||||||
|
|
||||||
if trackType.label() not in trackDescriptors.keys():
|
if TrackType.fromLabel(streamObj[MediaDescriptor.FFPROBE_CODEC_TYPE_KEY]) != TrackType.UNKNOWN:
|
||||||
trackDescriptors[trackType.label()] = []
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY].append(TrackDescriptor.fromFfprobe(streamObj))
|
||||||
|
|
||||||
trackDescriptors[trackType.label()].append(TrackDescriptor.fromFfprobe(streamObj))
|
|
||||||
|
|
||||||
kwargs = {}
|
# kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = trackDescriptors
|
||||||
if MediaDescriptor.FFPROBE_TAGS_KEY in formatData.keys():
|
|
||||||
kwargs[MediaDescriptor.TAGS_KEY] = formatData[MediaDescriptor.FFPROBE_TAGS_KEY]
|
|
||||||
kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY] = trackDescriptors
|
|
||||||
|
|
||||||
return cls(**kwargs)
|
return cls(**kwargs)
|
||||||
|
|
||||||
@@ -75,7 +83,9 @@ class MediaDescriptor():
|
|||||||
|
|
||||||
|
|
||||||
def getAudioTracks(self) -> List[TrackDescriptor]:
|
def getAudioTracks(self) -> List[TrackDescriptor]:
|
||||||
return self.__trackDescriptors[TrackType.AUDIO.label()] if TrackType.AUDIO.label() in self.__trackDescriptors.keys() else []
|
#return self.__trackDescriptors[TrackType.AUDIO.label()] if TrackType.AUDIO.label() in self.__trackDescriptors.keys() else []
|
||||||
|
return [d for d in self.__trackDescriptors if d.getType() == TrackType.AUDIO]
|
||||||
|
|
||||||
def getSubtitleTracks(self) -> List[TrackDescriptor]:
|
def getSubtitleTracks(self) -> List[TrackDescriptor]:
|
||||||
return self.__trackDescriptors[TrackType.SUBTITLE.label()] if TrackType.SUBTITLE.label() in self.__trackDescriptors.keys() else []
|
#return self.__trackDescriptors[TrackType.SUBTITLE.label()] if TrackType.SUBTITLE.label() in self.__trackDescriptors.keys() else []
|
||||||
|
return [d for d in self.__trackDescriptors if d.getType() == TrackType.SUBTITLE]
|
||||||
|
|||||||
@@ -53,13 +53,16 @@ class Pattern(Base):
|
|||||||
kwargs = {}
|
kwargs = {}
|
||||||
kwargs[MediaDescriptor.TAGS_KEY] = self.getTags()
|
kwargs[MediaDescriptor.TAGS_KEY] = self.getTags()
|
||||||
|
|
||||||
kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY] = {}
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = []
|
||||||
|
|
||||||
|
# for track in self.tracks:
|
||||||
|
#
|
||||||
|
# if track.getType() not in kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY].keys():
|
||||||
|
# kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY][track.getType().label()] = []
|
||||||
|
#
|
||||||
|
# kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY][track.getType().label()].append(track.getDescriptor())
|
||||||
|
|
||||||
for track in self.tracks:
|
for track in self.tracks:
|
||||||
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY].append(track.getDescriptor())
|
||||||
if track.getType() not in kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY].keys():
|
|
||||||
kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY][track.getType().label()] = []
|
|
||||||
|
|
||||||
kwargs[MediaDescriptor.TRACK_DESCRIPTORS_KEY][track.getType().label()].append(track.getDescriptor())
|
|
||||||
|
|
||||||
return MediaDescriptor(**kwargs)
|
return MediaDescriptor(**kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user