ff
This commit is contained in:
@@ -7,6 +7,9 @@ class DispositionCombination2():
|
||||
self._logger = context['logger']
|
||||
self._reportLogger = context['report_logger']
|
||||
|
||||
def getIdentifier(self):
|
||||
return self._combinationIdentifier
|
||||
|
||||
@staticmethod
|
||||
def list():
|
||||
basePath = os.path.dirname(__file__)
|
||||
|
||||
@@ -5,9 +5,12 @@ from .disposition_combination_2 import DispositionCombination2
|
||||
|
||||
|
||||
class DispositionCombination20(DispositionCombination2):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D00'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination20.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set(), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
|
||||
|
||||
class DispositionCombination21(DispositionCombination2):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D10'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination21.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set([TrackDisposition.DEFAULT]), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
|
||||
|
||||
class DispositionCombination22(DispositionCombination2):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D01'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination22.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set(), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_2 import DispositionCombination2
|
||||
|
||||
class DispositionCombination23(DispositionCombination2):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D11'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination23.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set([TrackDisposition.DEFAULT]), # 0
|
||||
|
||||
@@ -7,6 +7,9 @@ class DispositionCombination3():
|
||||
self._logger = context['logger']
|
||||
self._reportLogger = context['report_logger']
|
||||
|
||||
def getIdentifier(self):
|
||||
return self._combinationIdentifier
|
||||
|
||||
@staticmethod
|
||||
def list():
|
||||
basePath = os.path.dirname(__file__)
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
|
||||
|
||||
class DispositionCombination30(DispositionCombination3):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D000'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination30.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set(), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
|
||||
|
||||
class DispositionCombination31(DispositionCombination3):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D100'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination31.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set([TrackDisposition.DEFAULT]), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
|
||||
|
||||
class DispositionCombination32(DispositionCombination3):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D010'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination32.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set(), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
|
||||
|
||||
class DispositionCombination33(DispositionCombination3):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D001'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination33.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set(), # 0
|
||||
|
||||
@@ -6,8 +6,11 @@ from .disposition_combination_3 import DispositionCombination3
|
||||
|
||||
class DispositionCombination34(DispositionCombination3):
|
||||
|
||||
COMBINATION_IDENTIFIER = 'D101'
|
||||
|
||||
def __init__(self, context):
|
||||
super().__init__(context)
|
||||
self._combinationIdentifier = DispositionCombination34.COMBINATION_IDENTIFIER
|
||||
|
||||
def getDispositionTuple(self):
|
||||
return (set([TrackDisposition.DEFAULT]), # 0
|
||||
|
||||
@@ -32,23 +32,29 @@ class Scenario1(Scenario):
|
||||
# * MediaTags -> asserts
|
||||
|
||||
for tci in TrackCombination.list():
|
||||
combinationContext = self._context.copy()
|
||||
combinationContext['use_jellyfin'] = False
|
||||
combinationContext['use_tmdb'] = False
|
||||
combinationContext['use_pattern'] = False
|
||||
trackCombination = TrackCombination.getClassReference(tci)(combinationContext)
|
||||
# combinationContext = self._context.copy()
|
||||
self._context['use_jellyfin'] = True
|
||||
self._context['use_tmdb'] = False
|
||||
self._context['use_pattern'] = False
|
||||
trackCombination = TrackCombination.getClassReference(tci)(self._context)
|
||||
|
||||
subcombinations = trackCombination.getSubcombinations()
|
||||
if not subcombinations is None:
|
||||
for trackDescriptors, evaluateFunc, shouldFail in subcombinations:
|
||||
for trackDescriptors, evaluateFunc, shouldFail, combinationIdentifier in subcombinations:
|
||||
|
||||
kwargs = {}
|
||||
kwargs[MediaDescriptor.CONTEXT_KEY] = self._context
|
||||
kwargs[MediaDescriptor.TRACK_DESCRIPTOR_LIST_KEY] = trackDescriptors
|
||||
self._logger.debug(f"src track dispositions {[d.getDispositionSet() for d in trackDescriptors]}")
|
||||
sourceMediaDescriptor = MediaDescriptor(**kwargs)
|
||||
sourceMediaDescriptor.reindexSubIndices()
|
||||
# sourceMediaDescriptor.reindexIndices()
|
||||
|
||||
# Phase 1: Setup source files
|
||||
# TODO:
|
||||
# src track dispositions [set(), set(), {<TrackDisposition.DEFAULT: {'name': 'default', 'index': 0}>}, set(), set()]
|
||||
# vs
|
||||
# Stream #0:4: Subtitle: ass (ssa) (default)
|
||||
mediaFilePath = createMediaTestFile(mediaDescriptor=sourceMediaDescriptor, directory=self._testDirectory)
|
||||
|
||||
# Phase 2: Prepare database
|
||||
@@ -59,12 +65,15 @@ class Scenario1(Scenario):
|
||||
'convert',
|
||||
mediaFilePath,
|
||||
'--no-prompt']
|
||||
|
||||
if not self._context['use_jellyfin']:
|
||||
commandSequence += ['--no-jellyfin']
|
||||
|
||||
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()} test sequence: {commandSequence}")
|
||||
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()},{combinationIdentifier} test sequence: {commandSequence}")
|
||||
|
||||
out, err, rc = executeProcess(commandSequence, directory = self._testDirectory)
|
||||
|
||||
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()} process returned: {rc}")
|
||||
self._logger.debug(f"Scenario1.run(): sub={trackCombination.getIdentifier()},{combinationIdentifier} process returned: {rc}")
|
||||
|
||||
# if out:
|
||||
# self._logger.debug(f"Scenario1.run(): process output: {out}")
|
||||
@@ -78,7 +87,8 @@ class Scenario1(Scenario):
|
||||
if rc:
|
||||
# Stuck with prompt: More than one default subtitle stream detected! Please select stream:
|
||||
# TODO: Catch prompt is add option to fail at prompt
|
||||
assert shouldFail, "ffmpeg run didn't fail"
|
||||
assert shouldFail, "ffmpeg run didn't fail" if shouldFail else "ffmpeg run failed"
|
||||
self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test passed")
|
||||
else:
|
||||
|
||||
resultFile = os.path.join(self._testDirectory, 'media.webm')
|
||||
@@ -98,14 +108,16 @@ class Scenario1(Scenario):
|
||||
|
||||
# assert resultMediaTracks[2].getType() == TrackType.AUDIO, f"Stream #2 is not of type audio"
|
||||
|
||||
self._logger.debug(f"tgt track dispositions {[d.getDispositionSet() for d in resultMediaDescriptor.getSubtitleTracks()]}")
|
||||
|
||||
# assert dispositions
|
||||
evaluateFunc(resultMediaTracks)
|
||||
|
||||
self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()} test passed")
|
||||
self._reportLogger.info(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test passed")
|
||||
|
||||
except AssertionError as ae:
|
||||
|
||||
self._reportLogger.error(f"Scenario 1 sub={trackCombination.getIdentifier()} test failed ({ae})")
|
||||
self._reportLogger.error(f"Scenario 1 sub={trackCombination.getIdentifier()},{combinationIdentifier} test failed ({ae})")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -61,4 +61,5 @@ class TrackCombination3(TrackCombination):
|
||||
trackDescriptors = self.getTrackDescriptors(dispositionTuple)
|
||||
evaluateFunc = dispositionCombination.evaluateTrackDescriptors # assert function
|
||||
shouldFail = dispositionCombination.shouldFail() # true if this combination should fail
|
||||
yield (trackDescriptors, evaluateFunc, shouldFail)
|
||||
dispositionIdentifier = dispositionCombination.getIdentifier()
|
||||
yield (trackDescriptors, evaluateFunc, shouldFail, dispositionIdentifier)
|
||||
|
||||
Reference in New Issue
Block a user