You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
6.7 KiB
Python
166 lines
6.7 KiB
Python
import os, sys, importlib, glob, inspect, itertools
|
|
|
|
from ffx.track_type import TrackType
|
|
|
|
from ffx.track_descriptor import TrackDescriptor
|
|
from ffx.media_descriptor import MediaDescriptor
|
|
|
|
from .media_combinator import MediaCombinator
|
|
|
|
from .disposition_combinator_3 import DispositionCombinator3
|
|
from .track_tag_combinator_3 import TrackTagCombinator3
|
|
from .permutation_combinator_3 import PermutationCombinator3
|
|
from .media_tag_combinator import MediaTagCombinator
|
|
|
|
|
|
class MediaCombinator3(MediaCombinator):
|
|
|
|
VARIANT = 'VASSS'
|
|
|
|
def __init__(self, context = None,
|
|
createPresets: bool = False):
|
|
super().__init__(context)
|
|
|
|
self.__createPresets = createPresets
|
|
|
|
|
|
def getVariant(self):
|
|
return MediaCombinator3.VARIANT
|
|
|
|
|
|
def getPayload(self,
|
|
subtitleDispositionTuple = (set(), set(), set()),
|
|
subtitleTagTuple = ({}, {}, {})):
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[TrackDescriptor.INDEX_KEY] = 0
|
|
kwargs[TrackDescriptor.SOURCE_INDEX_KEY] = 0
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.VIDEO
|
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = 0
|
|
trackDescriptor0 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[TrackDescriptor.INDEX_KEY] = 1
|
|
kwargs[TrackDescriptor.SOURCE_INDEX_KEY] = 1
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.AUDIO
|
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = 0
|
|
trackDescriptor1 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[TrackDescriptor.INDEX_KEY] = 2
|
|
kwargs[TrackDescriptor.SOURCE_INDEX_KEY] = 2
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.SUBTITLE
|
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = 0
|
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = subtitleDispositionTuple[0]
|
|
kwargs[TrackDescriptor.TAGS_KEY] = subtitleTagTuple[0]
|
|
trackDescriptor2 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[TrackDescriptor.INDEX_KEY] = 3
|
|
kwargs[TrackDescriptor.SOURCE_INDEX_KEY] = 3
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.SUBTITLE
|
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = 1
|
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = subtitleDispositionTuple[1]
|
|
kwargs[TrackDescriptor.TAGS_KEY] = subtitleTagTuple[1]
|
|
trackDescriptor3 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[TrackDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[TrackDescriptor.INDEX_KEY] = 4
|
|
kwargs[TrackDescriptor.SOURCE_INDEX_KEY] = 4
|
|
kwargs[TrackDescriptor.TRACK_TYPE_KEY] = TrackType.SUBTITLE
|
|
kwargs[TrackDescriptor.SUB_INDEX_KEY] = 2
|
|
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = subtitleDispositionTuple[2]
|
|
kwargs[TrackDescriptor.TAGS_KEY] = subtitleTagTuple[2]
|
|
trackDescriptor4 = TrackDescriptor(**kwargs)
|
|
|
|
kwargs = {}
|
|
kwargs[MediaDescriptor.CONTEXT_KEY] = self._context
|
|
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = [trackDescriptor0,
|
|
trackDescriptor1,
|
|
trackDescriptor2,
|
|
trackDescriptor3,
|
|
trackDescriptor4]
|
|
|
|
mediaDescriptor = MediaDescriptor(**kwargs)
|
|
# mediaDescriptor.reindexSubIndices()
|
|
|
|
return mediaDescriptor
|
|
|
|
|
|
def assertFunc(self, testObj = {}):
|
|
pass
|
|
|
|
def shouldFail(self):
|
|
return False
|
|
|
|
def getYield(self):
|
|
|
|
for MTC in MediaTagCombinator.getAllClassReferences():
|
|
for DC3 in DispositionCombinator3.getAllClassReferences():
|
|
for TC3 in TrackTagCombinator3.getAllClassReferences():
|
|
|
|
dc3 = DC3(self._context)
|
|
tc3 = TC3(self._context)
|
|
|
|
mtc = MTC(self._context)
|
|
|
|
yObj = {}
|
|
|
|
yObj['identifier'] = self.getIdentifier()
|
|
yObj['variants'] = [self.getVariant(),
|
|
f"S:{dc3.getVariant()}",
|
|
f"S:{tc3.getVariant()}",
|
|
mtc.getVariant()]
|
|
|
|
yObj['payload'] = self.getPayload(dc3.getPayload(),
|
|
tc3.getPayload())
|
|
|
|
yObj['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
|
|
yObj['assertFuncs'] = [self.assertFunc,
|
|
dc3.createAssertFunc(),
|
|
tc3.createAssertFunc(),
|
|
mtc.createAssertFunc()]
|
|
|
|
yObj['shouldFail'] = (self.shouldFail()
|
|
| dc3.shouldFail()
|
|
| tc3.shouldFail()
|
|
| mtc.shouldFail())
|
|
yieldObj = {'target': yObj}
|
|
|
|
if self.__createPresets:
|
|
|
|
dc3_p = DC3(self._context, createPresets = True)
|
|
tc3_p = TC3(self._context, createPresets = True)
|
|
|
|
mtc_p = MTC(self._context, createPresets = True)
|
|
|
|
yObj_p = {}
|
|
|
|
yObj_p['identifier'] = self.getIdentifier()
|
|
yObj_p['variants'] = [self.getVariant(),
|
|
f"S:{dc3_p.getVariant()}",
|
|
f"S:{tc3_p.getVariant()}",
|
|
mtc_p.getVariant()]
|
|
|
|
yObj_p['payload'] = self.getPayload(dc3_p.getPayload(),
|
|
tc3_p.getPayload())
|
|
|
|
yObj_p['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
|
|
yObj_p['assertFuncs'] = [self.assertFunc,
|
|
dc3_p.createAssertFunc(),
|
|
tc3_p.createAssertFunc(),
|
|
mtc_p.createAssertFunc()]
|
|
|
|
yObj_p['shouldFail'] = (self.shouldFail()
|
|
| dc3_p.shouldFail()
|
|
| tc3_p.shouldFail()
|
|
| mtc_p.shouldFail())
|
|
yieldObj['preset'] = yObj_p
|
|
|
|
yield yieldObj
|