#407 Remove jellyfin

main
Maveno 11 months ago
parent 06978e6862
commit a4b3db3eba

1
.gitignore vendored

@ -4,3 +4,4 @@ junk/
.ipynb_checkpoints/ .ipynb_checkpoints/
ansible/inventory/hawaii.yml ansible/inventory/hawaii.yml
ansible/inventory/peppermint.yml ansible/inventory/peppermint.yml
ffx_test_report.log

@ -372,7 +372,6 @@ def convert(ctx,
episode, episode,
no_tmdb, no_tmdb,
# no_jellyfin,
no_pattern, no_pattern,
dont_pass_dispositions, dont_pass_dispositions,
no_prompt, no_prompt,
@ -397,10 +396,6 @@ def convert(ctx,
targetFormat = FfxController.DEFAULT_FILE_FORMAT targetFormat = FfxController.DEFAULT_FILE_FORMAT
targetExtension = FfxController.DEFAULT_FILE_EXTENSION targetExtension = FfxController.DEFAULT_FILE_EXTENSION
#TODO: #407 Without effect -> remove
context['use_jellyfin'] = False
context['use_tmdb'] = not no_tmdb context['use_tmdb'] = not no_tmdb
context['use_pattern'] = not no_pattern context['use_pattern'] = not no_pattern
context['no_prompt'] = no_prompt context['no_prompt'] = no_prompt

@ -34,6 +34,7 @@ class FfxController():
CHANNEL_MAP_5_1 = 'FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:5.1' CHANNEL_MAP_5_1 = 'FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:5.1'
#!
SIGNATURE_TAGS = {'RECODED_WITH': 'FFX'} SIGNATURE_TAGS = {'RECODED_WITH': 'FFX'}
def __init__(self, def __init__(self,
@ -47,10 +48,6 @@ class FfxController():
self.__configurationData = self.__context['config'].getData() self.__configurationData = self.__context['config'].getData()
# Convenience
# self.__niceness = self.__context['resource_limits']['niceness'] if 'resource_limits' in self.__context.keys() and 'niceness' in self.__context['resource_limits'].keys() else 99
# self.__cpuPercent = self.__context['resource_limits']['cpu_percent'] if 'resource_limits' in self.__context.keys() and 'cpu_percent' in self.__context['resource_limits'].keys() else 0
self.__logger = context['logger'] self.__logger = context['logger']

@ -27,8 +27,7 @@ class MediaDescriptor:
FFPROBE_TAGS_KEY = "tags" FFPROBE_TAGS_KEY = "tags"
FFPROBE_CODEC_TYPE_KEY = "codec_type" FFPROBE_CODEC_TYPE_KEY = "codec_type"
# JELLYFIN_ORDER_FLAG_KEY = "jellyfin_order" #407 remove as well
EXCLUDED_MEDIA_TAGS = ["creation_time"] EXCLUDED_MEDIA_TAGS = ["creation_time"]
SEASON_EPISODE_STREAM_LANGUAGE_MATCH = '[sS]([0-9]+)[eE]([0-9]+)_([0-9]+)_([a-z]{3})' SEASON_EPISODE_STREAM_LANGUAGE_MATCH = '[sS]([0-9]+)[eE]([0-9]+)_([0-9]+)_([a-z]{3})'
@ -72,9 +71,6 @@ class MediaDescriptor:
else: else:
self.__trackDescriptors = [] self.__trackDescriptors = []
#TODO: to be removed
self.__jellyfinOrder = False
def setTrackLanguage(self, language: str, index: int, trackType: TrackType = None): def setTrackLanguage(self, language: str, index: int, trackType: TrackType = None):
trackLanguage = IsoLanguage.findThreeLetter(language) trackLanguage = IsoLanguage.findThreeLetter(language)
@ -358,12 +354,8 @@ class MediaDescriptor:
for tp in range(maxNumOfTracks): for tp in range(maxNumOfTracks):
# inspect/update funktionier nur so #!
if self.__jellyfinOrder: vsTrackIndex = tracks[tp].getSourceIndex()
vsTrackIndex = tracks[tp].getSourceIndex()
else:
vsTrackIndex = tp
# vsTrackIndex = tracks[tp].getSourceIndex()
# Will trigger if tracks are missing in file # Will trigger if tracks are missing in file
if tp > (numVsTracks - 1): if tp > (numVsTracks - 1):
@ -431,9 +423,6 @@ class MediaDescriptor:
# sti = self.__trackDescriptors[trackIndex].getSourceIndex() # sti = self.__trackDescriptors[trackIndex].getSourceIndex()
# sotd = sourceOrderTrackDescriptors[sti] # sotd = sourceOrderTrackDescriptors[sti]
# appearently this negates applyJellyfinOrder
#for rtd in sorted(self.__trackDescriptors.copy(), key=lambda d: d.getSourceIndex()):
trackType = td.getType() trackType = td.getType()
if (trackType == TrackType.VIDEO or not only_video): if (trackType == TrackType.VIDEO or not only_video):

@ -41,71 +41,36 @@ class DispositionCombinator21(DispositionCombinator2):
if self.__createPresets: if self.__createPresets:
if self._context['use_jellyfin']:
def f(assertObj: dict):
def f(assertObj: dict): if not 'tracks' in assertObj.keys():
if not 'tracks' in assertObj.keys(): raise KeyError("assertObj does not contain key 'tracks'")
raise KeyError("assertObj does not contain key 'tracks'") trackDescriptors = assertObj['tracks']
trackDescriptors = assertObj['tracks']
# source subIndex 0
# source subIndex 1 assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
assert not (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" # assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.FORCED) # ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set 'comment' disposition"
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set 'forced' disposition" # source subIndex 1
# source subIndex 0 assert not (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition" assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
# assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.COMMENT) ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved set 'forced' disposition"
# ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved set 'comment' disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set 'comment' disposition"
# source subIndex 1
assert not (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved set 'forced' disposition"
else: else:
if self._context['use_jellyfin']: def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
def f(assertObj: dict): raise KeyError("assertObj does not contain key 'tracks'")
if not 'tracks' in assertObj.keys(): trackDescriptors = assertObj['tracks']
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks'] # source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 1 ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) # source subIndex 1
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 0 ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
# source subIndex 1
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
return f return f

@ -45,101 +45,51 @@ class DispositionCombinator31(DispositionCombinator3):
if self.__createPresets: if self.__createPresets:
if self._context['use_jellyfin']: def f(assertObj: dict):
def f(assertObj: dict): if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
if not 'tracks' in assertObj.keys(): trackDescriptors = assertObj['tracks']
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks'] # source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved default disposition"
# source subIndex 1 # source subIndex 1
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.FORCED) assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved descriptions disposition" ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved default disposition"
# source subIndex 2 # source subIndex 2
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
# assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED) # assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED)
# ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved default disposition" # ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
# source subIndex 0
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved set default disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved default disposition"
# source subIndex 1
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved default disposition"
# source subIndex 2
assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
# assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED)
# ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
else: else:
if self._context['use_jellyfin']: def f(assertObj: dict):
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 1
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
# source subIndex 2
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
# source subIndex 0
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys(): if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'") raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks'] trackDescriptors = assertObj['tracks']
# source subIndex 0 # source subIndex 0
assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition" ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not set default disposition"
# source subIndex 1 # source subIndex 1
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
# source subIndex 2 # source subIndex 2
assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT) assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition" ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
return f return f

@ -45,87 +45,44 @@ class DispositionCombinator32(DispositionCombinator3):
def createAssertFunc(self): def createAssertFunc(self):
if self.__createPresets: if self.__createPresets:
if self._context['use_jellyfin']:
def f(assertObj: dict):
def f(assertObj: dict): if not 'tracks' in assertObj.keys():
if not 'tracks' in assertObj.keys(): raise KeyError("assertObj does not contain key 'tracks'")
raise KeyError("assertObj does not contain key 'tracks'") trackDescriptors = assertObj['tracks']
trackDescriptors = assertObj['tracks']
# source subIndex 0
# source subIndex 0 assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" # assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT) # ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition"
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition" # source subIndex 1
# source subIndex 2 assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition"
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" # assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DESCRIPTIONS)
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED) # ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved descriptions disposition"
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved default disposition" # source subIndex 2
# source subIndex 1 assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition" assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.FORCED)
# assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DESCRIPTIONS) ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
# ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved descriptions disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition"
# source subIndex 1
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DESCRIPTIONS)
# ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved descriptions disposition"
# source subIndex 2
assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.FORCED)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
else: else:
if self._context['use_jellyfin']: def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
def f(assertObj: dict): raise KeyError("assertObj does not contain key 'tracks'")
if not 'tracks' in assertObj.keys(): trackDescriptors = assertObj['tracks']
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks'] # source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 0 ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) # source subIndex 1
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 2 ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition"
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) # source subIndex 2
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 1 ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
# source subIndex 1
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not set default disposition"
# source subIndex 2
assert (not trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has set default disposition"
return f return f
def shouldFail(self): def shouldFail(self):

@ -45,87 +45,44 @@ class DispositionCombinator33(DispositionCombinator3):
def createAssertFunc(self): def createAssertFunc(self):
if self.__createPresets: if self.__createPresets:
if self._context['use_jellyfin']:
def f(assertObj: dict):
def f(assertObj: dict): if not 'tracks' in assertObj.keys():
if not 'tracks' in assertObj.keys(): raise KeyError("assertObj does not contain key 'tracks'")
raise KeyError("assertObj does not contain key 'tracks'") trackDescriptors = assertObj['tracks']
trackDescriptors = assertObj['tracks']
# source subIndex 0
# source subIndex 0 assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" # assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT) # ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition"
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition" # source subIndex 1
# source subIndex 2 assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
# assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED) ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved descriptions disposition"
# ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved default disposition" # source subIndex 2
# source subIndex 1 assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT) ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition" # assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED)
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.FORCED) # ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved descriptions disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
# assert (trackDescriptors[0].getDispositionFlag(TrackDisposition.COMMENT)
# ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has not preserved set default disposition"
# source subIndex 1
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (trackDescriptors[1].getDispositionFlag(TrackDisposition.FORCED)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has not preserved descriptions disposition"
# source subIndex 2
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
# assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.HEARING_IMPAIRED)
# ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not preserved default disposition"
else: else:
if self._context['use_jellyfin']: def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
def f(assertObj: dict): raise KeyError("assertObj does not contain key 'tracks'")
if not 'tracks' in assertObj.keys(): trackDescriptors = assertObj['tracks']
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks'] # source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 0 ), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT) # source subIndex 1
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition" assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 2 ), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT) # source subIndex 2
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition" assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
# source subIndex 1 ), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
else:
def f(assertObj: dict):
if not 'tracks' in assertObj.keys():
raise KeyError("assertObj does not contain key 'tracks'")
trackDescriptors = assertObj['tracks']
# source subIndex 0
assert (not trackDescriptors[0].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #0 index={trackDescriptors[0].getIndex()} [{trackDescriptors[0].getType().label()}:{trackDescriptors[0].getSubIndex()}] has set default disposition"
# source subIndex 1
assert (not trackDescriptors[1].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #1 index={trackDescriptors[1].getIndex()} [{trackDescriptors[1].getType().label()}:{trackDescriptors[1].getSubIndex()}] has set default disposition"
# source subIndex 2
assert (trackDescriptors[2].getDispositionFlag(TrackDisposition.DEFAULT)
), f"Stream #2 index={trackDescriptors[2].getIndex()} [{trackDescriptors[2].getType().label()}:{trackDescriptors[2].getSubIndex()}] has not set default disposition"
return f return f
def shouldFail(self): def shouldFail(self):

@ -9,6 +9,7 @@ from ffx.media_descriptor import MediaDescriptor
from ffx.track_type import TrackType from ffx.track_type import TrackType
from ffx.helper import dictCache from ffx.helper import dictCache
from ffx.configuration_controller import ConfigurationController
SHORT_SUBTITLE_SEQUENCE = [{'start': 1, 'end': 2, 'text': 'yolo'}, SHORT_SUBTITLE_SEQUENCE = [{'start': 1, 'end': 2, 'text': 'yolo'},
@ -230,7 +231,8 @@ def createMediaTestFile(mediaDescriptor: MediaDescriptor,
f"{mediaTagKey}={mediaTagValue}"] f"{mediaTagKey}={mediaTagValue}"]
subIndexCounter[trackType] += 1 subIndexCounter[trackType] += 1
ffxContext = {'logger': logger} #TODO: Optimize too many runs
ffxContext = {'config': ConfigurationController(), 'logger': logger}
fc = FfxController(ffxContext, mediaDescriptor) fc = FfxController(ffxContext, mediaDescriptor)
commandTokens += (generatorTokens commandTokens += (generatorTokens

@ -92,75 +92,65 @@ class MediaCombinator2(MediaCombinator):
for MTC in MediaTagCombinator.getAllClassReferences(): for MTC in MediaTagCombinator.getAllClassReferences():
for DC2 in DispositionCombinator2.getAllClassReferences(): for DC2 in DispositionCombinator2.getAllClassReferences():
for TC2 in TrackTagCombinator2.getAllClassReferences(): for TC2 in TrackTagCombinator2.getAllClassReferences():
for J in JellyfinCombinator.getAllClassReferences():
j = J(self._context) dc2 = DC2(self._context)
self._context['use_jellyfin'] = j.getPayload() tc2 = TC2(self._context)
dc2 = DC2(self._context) mtc = MTC(self._context)
tc2 = TC2(self._context)
mtc = MTC(self._context) yObj = {}
yObj = {} yObj['identifier'] = self.getIdentifier()
yObj['variants'] = [self.getVariant(),
f"S:{dc2.getVariant()}",
f"S:{tc2.getVariant()}",
mtc.getVariant()]
yObj['identifier'] = self.getIdentifier() yObj['payload'] = self.getPayload(dc2.getPayload(),
yObj['variants'] = [self.getVariant(), tc2.getPayload())
f"S:{dc2.getVariant()}",
f"S:{tc2.getVariant()}",
mtc.getVariant(),
j.getVariant()]
yObj['payload'] = self.getPayload(dc2.getPayload(), yObj['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
tc2.getPayload()) yObj['assertFuncs'] = [self.assertFunc,
dc2.createAssertFunc(),
tc2.createAssertFunc(),
mtc.createAssertFunc()]
yObj['assertSelectors'] = ['M', 'SD', 'ST', 'MT', 'J'] yObj['shouldFail'] = (self.shouldFail()
yObj['assertFuncs'] = [self.assertFunc, | dc2.shouldFail()
dc2.createAssertFunc(), | tc2.shouldFail()
tc2.createAssertFunc(), | mtc.shouldFail())
mtc.createAssertFunc(),
j.assertFunc]
yObj['shouldFail'] = (self.shouldFail() yieldObj = {'target': yObj}
| dc2.shouldFail()
| tc2.shouldFail()
| mtc.shouldFail()
| j.shouldFail())
yieldObj = {'target': yObj} if self.__createPresets:
if self.__createPresets: dc2_p = DC2(self._context, createPresets = True)
tc2_p = TC2(self._context, createPresets = True)
dc2_p = DC2(self._context, createPresets = True) mtc_p = MTC(self._context, createPresets = True)
tc2_p = TC2(self._context, createPresets = True)
mtc_p = MTC(self._context, createPresets = True) yObj_p = {}
yObj_p = {} yObj_p['identifier'] = self.getIdentifier()
yObj_p['variants'] = [self.getVariant(),
f"S:{dc2_p.getVariant()}",
f"S:{tc2_p.getVariant()}",
mtc_p.getVariant()]
yObj_p['identifier'] = self.getIdentifier() yObj_p['payload'] = self.getPayload(dc2_p.getPayload(),
yObj_p['variants'] = [self.getVariant(), tc2_p.getPayload())
f"S:{dc2_p.getVariant()}",
f"S:{tc2_p.getVariant()}",
mtc_p.getVariant(),
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc2_p.getPayload(), yObj_p['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
tc2_p.getPayload()) yObj_p['assertFuncs'] = [self.assertFunc,
dc2_p.createAssertFunc(),
tc2_p.createAssertFunc(),
mtc_p.createAssertFunc()]
yObj_p['assertSelectors'] = ['M', 'SD', 'ST', 'MT', 'J'] yObj_p['shouldFail'] = (self.shouldFail()
yObj_p['assertFuncs'] = [self.assertFunc, | dc2_p.shouldFail()
dc2_p.createAssertFunc(), | tc2_p.shouldFail()
tc2_p.createAssertFunc(), | mtc_p.shouldFail())
mtc_p.createAssertFunc(),
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yieldObj['preset'] = yObj_p
| dc2_p.shouldFail()
| tc2_p.shouldFail()
| mtc_p.shouldFail()
| j.shouldFail())
yieldObj['preset'] = yObj_p yield yieldObj
yield yieldObj

@ -103,10 +103,6 @@ class MediaCombinator3(MediaCombinator):
for MTC in MediaTagCombinator.getAllClassReferences(): for MTC in MediaTagCombinator.getAllClassReferences():
for DC3 in DispositionCombinator3.getAllClassReferences(): for DC3 in DispositionCombinator3.getAllClassReferences():
for TC3 in TrackTagCombinator3.getAllClassReferences(): for TC3 in TrackTagCombinator3.getAllClassReferences():
for J in JellyfinCombinator.getAllClassReferences():
j = J(self._context)
self._context['use_jellyfin'] = j.getPayload()
dc3 = DC3(self._context) dc3 = DC3(self._context)
tc3 = TC3(self._context) tc3 = TC3(self._context)
@ -119,24 +115,21 @@ class MediaCombinator3(MediaCombinator):
yObj['variants'] = [self.getVariant(), yObj['variants'] = [self.getVariant(),
f"S:{dc3.getVariant()}", f"S:{dc3.getVariant()}",
f"S:{tc3.getVariant()}", f"S:{tc3.getVariant()}",
mtc.getVariant(), mtc.getVariant()]
j.getVariant()]
yObj['payload'] = self.getPayload(dc3.getPayload(), yObj['payload'] = self.getPayload(dc3.getPayload(),
tc3.getPayload()) tc3.getPayload())
yObj['assertSelectors'] = ['M', 'SD', 'ST', 'MT', 'J'] yObj['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
yObj['assertFuncs'] = [self.assertFunc, yObj['assertFuncs'] = [self.assertFunc,
dc3.createAssertFunc(), dc3.createAssertFunc(),
tc3.createAssertFunc(), tc3.createAssertFunc(),
mtc.createAssertFunc(), mtc.createAssertFunc()]
j.assertFunc]
yObj['shouldFail'] = (self.shouldFail() yObj['shouldFail'] = (self.shouldFail()
| dc3.shouldFail() | dc3.shouldFail()
| tc3.shouldFail() | tc3.shouldFail()
| mtc.shouldFail() | mtc.shouldFail())
| j.shouldFail())
yieldObj = {'target': yObj} yieldObj = {'target': yObj}
if self.__createPresets: if self.__createPresets:
@ -152,24 +145,21 @@ class MediaCombinator3(MediaCombinator):
yObj_p['variants'] = [self.getVariant(), yObj_p['variants'] = [self.getVariant(),
f"S:{dc3_p.getVariant()}", f"S:{dc3_p.getVariant()}",
f"S:{tc3_p.getVariant()}", f"S:{tc3_p.getVariant()}",
mtc_p.getVariant(), mtc_p.getVariant()]
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc3_p.getPayload(), yObj_p['payload'] = self.getPayload(dc3_p.getPayload(),
tc3_p.getPayload()) tc3_p.getPayload())
yObj_p['assertSelectors'] = ['M', 'SD', 'ST', 'MT', 'J'] yObj_p['assertSelectors'] = ['M', 'SD', 'ST', 'MT']
yObj_p['assertFuncs'] = [self.assertFunc, yObj_p['assertFuncs'] = [self.assertFunc,
dc3_p.createAssertFunc(), dc3_p.createAssertFunc(),
tc3_p.createAssertFunc(), tc3_p.createAssertFunc(),
mtc_p.createAssertFunc(), mtc_p.createAssertFunc()]
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yObj_p['shouldFail'] = (self.shouldFail()
| dc3_p.shouldFail() | dc3_p.shouldFail()
| tc3_p.shouldFail() | tc3_p.shouldFail()
| mtc_p.shouldFail() | mtc_p.shouldFail())
| j.shouldFail())
yieldObj['preset'] = yObj_p yieldObj['preset'] = yObj_p
yield yieldObj yield yieldObj

@ -83,10 +83,6 @@ class MediaCombinator4(MediaCombinator):
for MTC in MediaTagCombinator.getAllClassReferences(): for MTC in MediaTagCombinator.getAllClassReferences():
for DC2 in DispositionCombinator2.getAllClassReferences(): for DC2 in DispositionCombinator2.getAllClassReferences():
for TC2 in TrackTagCombinator2.getAllClassReferences(): for TC2 in TrackTagCombinator2.getAllClassReferences():
for J in JellyfinCombinator.getAllClassReferences():
j = J(self._context)
self._context['use_jellyfin'] = j.getPayload()
dc2 = DC2(self._context) dc2 = DC2(self._context)
tc2 = TC2(self._context) tc2 = TC2(self._context)
@ -99,24 +95,21 @@ class MediaCombinator4(MediaCombinator):
yObj['variants'] = [self.getVariant(), yObj['variants'] = [self.getVariant(),
f"A:{dc2.getVariant()}", f"A:{dc2.getVariant()}",
f"A:{tc2.getVariant()}", f"A:{tc2.getVariant()}",
mtc.getVariant(), mtc.getVariant()]
j.getVariant()]
yObj['payload'] = self.getPayload(dc2.getPayload(), yObj['payload'] = self.getPayload(dc2.getPayload(),
tc2.getPayload()) tc2.getPayload())
yObj['assertSelectors'] = ['M', 'AD', 'AT', 'MT', 'J'] yObj['assertSelectors'] = ['M', 'AD', 'AT', 'MT']
yObj['assertFuncs'] = [self.assertFunc, yObj['assertFuncs'] = [self.assertFunc,
dc2.createAssertFunc(), dc2.createAssertFunc(),
tc2.createAssertFunc(), tc2.createAssertFunc(),
mtc.createAssertFunc(), mtc.createAssertFunc()]
j.assertFunc]
yObj['shouldFail'] = (self.shouldFail() yObj['shouldFail'] = (self.shouldFail()
| dc2.shouldFail() | dc2.shouldFail()
| tc2.shouldFail() | tc2.shouldFail()
| mtc.shouldFail() | mtc.shouldFail())
| j.shouldFail())
yieldObj = {'target': yObj} yieldObj = {'target': yObj}
if self.__createPresets: if self.__createPresets:
@ -132,24 +125,21 @@ class MediaCombinator4(MediaCombinator):
yObj_p['variants'] = [self.getVariant(), yObj_p['variants'] = [self.getVariant(),
f"A:{dc2_p.getVariant()}", f"A:{dc2_p.getVariant()}",
f"A:{tc2_p.getVariant()}", f"A:{tc2_p.getVariant()}",
mtc_p.getVariant(), mtc_p.getVariant()]
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc2_p.getPayload(), yObj_p['payload'] = self.getPayload(dc2_p.getPayload(),
tc2_p.getPayload()) tc2_p.getPayload())
yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'MT', 'J'] yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'MT']
yObj_p['assertFuncs'] = [self.assertFunc, yObj_p['assertFuncs'] = [self.assertFunc,
dc2_p.createAssertFunc(), dc2_p.createAssertFunc(),
tc2_p.createAssertFunc(), tc2_p.createAssertFunc(),
mtc_p.createAssertFunc(), mtc_p.createAssertFunc()]
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yObj_p['shouldFail'] = (self.shouldFail()
| dc2_p.shouldFail() | dc2_p.shouldFail()
| tc2_p.shouldFail() | tc2_p.shouldFail()
| mtc_p.shouldFail() | mtc_p.shouldFail())
| j.shouldFail())
yieldObj['preset'] = yObj_p yieldObj['preset'] = yObj_p
yield yieldObj yield yieldObj

@ -93,10 +93,6 @@ class MediaCombinator5(MediaCombinator):
for MTC in MediaTagCombinator.getAllClassReferences(): for MTC in MediaTagCombinator.getAllClassReferences():
for DC2 in DispositionCombinator2.getAllClassReferences(): for DC2 in DispositionCombinator2.getAllClassReferences():
for TC2 in TrackTagCombinator2.getAllClassReferences(): for TC2 in TrackTagCombinator2.getAllClassReferences():
for J in JellyfinCombinator.getAllClassReferences():
j = J(self._context)
self._context['use_jellyfin'] = j.getPayload()
dc2 = DC2(self._context) dc2 = DC2(self._context)
tc2 = TC2(self._context) tc2 = TC2(self._context)
@ -109,24 +105,21 @@ class MediaCombinator5(MediaCombinator):
yObj['variants'] = [self.getVariant(), yObj['variants'] = [self.getVariant(),
f"A:{dc2.getVariant()}", f"A:{dc2.getVariant()}",
f"A:{tc2.getVariant()}", f"A:{tc2.getVariant()}",
mtc.getVariant(), mtc.getVariant()]
j.getVariant()]
yObj['payload'] = self.getPayload(dc2.getPayload(), yObj['payload'] = self.getPayload(dc2.getPayload(),
tc2.getPayload()) tc2.getPayload())
yObj['assertSelectors'] = ['M', 'AD', 'AT', 'MT', 'J'] yObj['assertSelectors'] = ['M', 'AD', 'AT', 'MT']
yObj['assertFuncs'] = [self.assertFunc, yObj['assertFuncs'] = [self.assertFunc,
dc2.createAssertFunc(), dc2.createAssertFunc(),
tc2.createAssertFunc(), tc2.createAssertFunc(),
mtc.createAssertFunc(), mtc.createAssertFunc()]
j.assertFunc]
yObj['shouldFail'] = (self.shouldFail() yObj['shouldFail'] = (self.shouldFail()
| dc2.shouldFail() | dc2.shouldFail()
| tc2.shouldFail() | tc2.shouldFail()
| mtc.shouldFail() | mtc.shouldFail())
| j.shouldFail())
yieldObj = {'target': yObj} yieldObj = {'target': yObj}
if self.__createPresets: if self.__createPresets:
@ -142,24 +135,21 @@ class MediaCombinator5(MediaCombinator):
yObj_p['variants'] = [self.getVariant(), yObj_p['variants'] = [self.getVariant(),
f"A:{dc2_p.getVariant()}", f"A:{dc2_p.getVariant()}",
f"A:{tc2_p.getVariant()}", f"A:{tc2_p.getVariant()}",
mtc_p.getVariant(), mtc_p.getVariant()]
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc2_p.getPayload(), yObj_p['payload'] = self.getPayload(dc2_p.getPayload(),
tc2_p.getPayload()) tc2_p.getPayload())
yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'MT', 'J'] yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'MT']
yObj_p['assertFuncs'] = [self.assertFunc, yObj_p['assertFuncs'] = [self.assertFunc,
dc2_p.createAssertFunc(), dc2_p.createAssertFunc(),
tc2_p.createAssertFunc(), tc2_p.createAssertFunc(),
mtc_p.createAssertFunc(), mtc_p.createAssertFunc()]
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yObj_p['shouldFail'] = (self.shouldFail()
| dc2_p.shouldFail() | dc2_p.shouldFail()
| tc2_p.shouldFail() | tc2_p.shouldFail()
| mtc_p.shouldFail() | mtc_p.shouldFail())
| j.shouldFail())
yieldObj['preset'] = yObj_p yieldObj['preset'] = yObj_p
yield yieldObj yield yieldObj

@ -109,10 +109,6 @@ class MediaCombinator6(MediaCombinator):
for TC2_A in TrackTagCombinator2.getAllClassReferences(): for TC2_A in TrackTagCombinator2.getAllClassReferences():
for DC2_S in DispositionCombinator2.getAllClassReferences(): for DC2_S in DispositionCombinator2.getAllClassReferences():
for TC2_S in TrackTagCombinator2.getAllClassReferences(): for TC2_S in TrackTagCombinator2.getAllClassReferences():
for J in JellyfinCombinator.getAllClassReferences():
j = J(self._context)
self._context['use_jellyfin'] = j.getPayload()
dc2a = DC2_A(self._context) dc2a = DC2_A(self._context)
tc2a = TC2_A(self._context) tc2a = TC2_A(self._context)
@ -129,30 +125,27 @@ class MediaCombinator6(MediaCombinator):
f"A:{tc2a.getVariant()}", f"A:{tc2a.getVariant()}",
f"S:{dc2s.getVariant()}", f"S:{dc2s.getVariant()}",
f"S:{tc2s.getVariant()}", f"S:{tc2s.getVariant()}",
mtc.getVariant(), mtc.getVariant()]
j.getVariant()]
yObj['payload'] = self.getPayload(dc2a.getPayload(), yObj['payload'] = self.getPayload(dc2a.getPayload(),
tc2a.getPayload(), tc2a.getPayload(),
dc2s.getPayload(), dc2s.getPayload(),
tc2s.getPayload()) tc2s.getPayload())
yObj['assertSelectors'] = ['M', 'AD', 'AT', 'SD', 'ST', 'MT', 'J'] yObj['assertSelectors'] = ['M', 'AD', 'AT', 'SD', 'ST', 'MT']
yObj['assertFuncs'] = [self.assertFunc, yObj['assertFuncs'] = [self.assertFunc,
dc2a.createAssertFunc(), dc2a.createAssertFunc(),
tc2a.createAssertFunc(), tc2a.createAssertFunc(),
dc2s.createAssertFunc(), dc2s.createAssertFunc(),
tc2s.createAssertFunc(), tc2s.createAssertFunc(),
mtc.createAssertFunc(), mtc.createAssertFunc()]
j.assertFunc]
yObj['shouldFail'] = (self.shouldFail() yObj['shouldFail'] = (self.shouldFail()
| dc2a.shouldFail() | dc2a.shouldFail()
| tc2a.shouldFail() | tc2a.shouldFail()
| dc2s.shouldFail() | dc2s.shouldFail()
| tc2s.shouldFail() | tc2s.shouldFail()
| mtc.shouldFail() | mtc.shouldFail())
| j.shouldFail())
yieldObj = {'target': yObj} yieldObj = {'target': yObj}
if self.__createPresets: if self.__createPresets:
@ -172,30 +165,27 @@ class MediaCombinator6(MediaCombinator):
f"A:{tc2a_p.getVariant()}", f"A:{tc2a_p.getVariant()}",
f"S:{dc2s_p.getVariant()}", f"S:{dc2s_p.getVariant()}",
f"S:{tc2s_p.getVariant()}", f"S:{tc2s_p.getVariant()}",
mtc_p.getVariant(), mtc_p.getVariant()]
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc2a_p.getPayload(), yObj_p['payload'] = self.getPayload(dc2a_p.getPayload(),
tc2a_p.getPayload(), tc2a_p.getPayload(),
dc2s_p.getPayload(), dc2s_p.getPayload(),
tc2s_p.getPayload()) tc2s_p.getPayload())
yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'SD', 'ST', 'MT', 'J'] yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'SD', 'ST', 'MT']
yObj_p['assertFuncs'] = [self.assertFunc, yObj_p['assertFuncs'] = [self.assertFunc,
dc2a_p.createAssertFunc(), dc2a_p.createAssertFunc(),
tc2a_p.createAssertFunc(), tc2a_p.createAssertFunc(),
dc2s_p.createAssertFunc(), dc2s_p.createAssertFunc(),
tc2s_p.createAssertFunc(), tc2s_p.createAssertFunc(),
mtc_p.createAssertFunc(), mtc_p.createAssertFunc()]
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yObj_p['shouldFail'] = (self.shouldFail()
| dc2a_p.shouldFail() | dc2a_p.shouldFail()
| tc2a_p.shouldFail() | tc2a_p.shouldFail()
| dc2s_p.shouldFail() | dc2s_p.shouldFail()
| tc2s_p.shouldFail() | tc2s_p.shouldFail()
| mtc_p.shouldFail() | mtc_p.shouldFail())
| j.shouldFail())
yieldObj['preset'] = yObj_p yieldObj['preset'] = yObj_p
yield yieldObj yield yieldObj

@ -160,8 +160,8 @@ class MediaCombinator7(MediaCombinator):
yObj['assertSelectors'] = ['M', 'AP', 'SP', 'AD', 'AT', 'SD', 'ST', 'MT'] yObj['assertSelectors'] = ['M', 'AP', 'SP', 'AD', 'AT', 'SD', 'ST', 'MT']
yObj['assertFuncs'] = [self.assertFunc, yObj['assertFuncs'] = [self.assertFunc,
p2y.createAssertFunc(), p2y['assertFunc'],
p3y.createAssertFunc(), p3y['assertFunc'],
dc2a.createAssertFunc(), dc2a.createAssertFunc(),
tc2a.createAssertFunc(), tc2a.createAssertFunc(),
dc3s.createAssertFunc(), dc3s.createAssertFunc(),
@ -169,8 +169,8 @@ class MediaCombinator7(MediaCombinator):
mtc.createAssertFunc()] mtc.createAssertFunc()]
yObj['shouldFail'] = (self.shouldFail() yObj['shouldFail'] = (self.shouldFail()
| p2y.shouldFail() | p2y['shouldFail']
| p3y.shouldFail() | p3y['shouldFail']
| dc2a.shouldFail() | dc2a.shouldFail()
| tc2a.shouldFail() | tc2a.shouldFail()
| dc3s.shouldFail() | dc3s.shouldFail()
@ -191,35 +191,40 @@ class MediaCombinator7(MediaCombinator):
yObj_p['identifier'] = self.getIdentifier() yObj_p['identifier'] = self.getIdentifier()
yObj_p['variants'] = [self.getVariant(), yObj_p['variants'] = [self.getVariant(),
f"A:{p2y['variant']}",
f"S:{p3y['variant']}",
f"A:{dc2a_p.getVariant()}", f"A:{dc2a_p.getVariant()}",
f"A:{tc2a_p.getVariant()}", f"A:{tc2a_p.getVariant()}",
f"S:{dc3s_p.getVariant()}", f"S:{dc3s_p.getVariant()}",
f"S:{tc3s_p.getVariant()}", f"S:{tc3s_p.getVariant()}",
mtc_p.getVariant(), mtc_p.getVariant()]
j.getVariant()]
yObj_p['payload'] = self.getPayload(dc2a_p.getPayload(), yObj_p['payload'] = self.getPayload(p2y['permutation'],
p3y['permutation'],
dc2a_p.getPayload(),
tc2a_p.getPayload(), tc2a_p.getPayload(),
dc3s_p.getPayload(), dc3s_p.getPayload(),
tc3s_p.getPayload()) tc3s_p.getPayload())
yObj_p['assertSelectors'] = ['M', 'AD', 'AT', 'SD', 'ST', 'MT', 'J'] yObj_p['assertSelectors'] = ['M', 'AP', 'SP', 'AD', 'AT', 'SD', 'ST', 'MT']
yObj_p['assertFuncs'] = [self.assertFunc, yObj_p['assertFuncs'] = [self.assertFunc,
p2y['assertFunc'],
p3y['assertFunc'],
dc2a_p.createAssertFunc(), dc2a_p.createAssertFunc(),
tc2a_p.createAssertFunc(), tc2a_p.createAssertFunc(),
dc3s_p.createAssertFunc(), dc3s_p.createAssertFunc(),
tc3s_p.createAssertFunc(), tc3s_p.createAssertFunc(),
mtc_p.createAssertFunc(), mtc_p.createAssertFunc()]
j.assertFunc]
yObj_p['shouldFail'] = (self.shouldFail() yObj_p['shouldFail'] = (self.shouldFail()
| p2y['shouldFail']
| p3y['shouldFail']
| dc2a_p.shouldFail() | dc2a_p.shouldFail()
| tc2a_p.shouldFail() | tc2a_p.shouldFail()
| dc3s_p.shouldFail() | dc3s_p.shouldFail()
| tc3s_p.shouldFail() | tc3s_p.shouldFail()
| mtc_p.shouldFail() | mtc_p.shouldFail())
| j.shouldFail())
yieldObj['preset'] = yObj_p yieldObj['preset'] = yObj_p
yield yieldObj yield yieldObj

@ -20,7 +20,9 @@ class PermutationCombinator2():
def getPayload(self, permutationIndex): def getPayload(self, permutationIndex):
return { return {
'variant': f"P{permutationIndex}", 'variant': f"P{permutationIndex}",
'permutation': PermutationCombinator2.PERMUTATION_LIST[permutationIndex] 'permutation': PermutationCombinator2.PERMUTATION_LIST[permutationIndex],
'assertFunc': self.createAssertFunc(),
'shouldFail': self.shouldFail()
} }
def createAssertFunc(self): def createAssertFunc(self):

@ -21,7 +21,9 @@ class PermutationCombinator3():
def getPayload(self, permutationIndex): def getPayload(self, permutationIndex):
return { return {
'variant': f"P{permutationIndex}", 'variant': f"P{permutationIndex}",
'permutation': PermutationCombinator3.PERMUTATION_LIST[permutationIndex] 'permutation': PermutationCombinator3.PERMUTATION_LIST[permutationIndex],
'assertFunc': self.createAssertFunc(),
'shouldFail': self.shouldFail()
} }
def createAssertFunc(self): def createAssertFunc(self):

@ -10,7 +10,7 @@ from ffx.database import databaseContext
class Scenario(): class Scenario():
"""Scenarios """Scenarios
Scenario1: Jellyfin, MediaTags, Stream-Kombinationen, Dispositions und StreamTags per Kombinatoren Scenario1: MediaTags, Stream-Kombinationen, Dispositions und StreamTags per Kombinatoren
Scenario2: <pattern> mit 3 Files x Scenario1 Scenario2: <pattern> mit 3 Files x Scenario1
@ -25,7 +25,6 @@ class Scenario():
tmdb lookup: Set Showname as prefix, append episode name tmdb lookup: Set Showname as prefix, append episode name
pattern lookup: Set/update tags/dispositions; Filter/Reorder Tracks pattern lookup: Set/update tags/dispositions; Filter/Reorder Tracks
jellyfin reordering: default track last (2)
MediaTag-Kombinationen (2) MediaTag-Kombinationen (2)

@ -29,7 +29,6 @@ class Scenario1(Scenario):
def __init__(self, context): def __init__(self, context):
context['use_jellyfin'] = True
context['use_tmdb'] = False context['use_tmdb'] = False
context['use_pattern'] = False context['use_pattern'] = False
@ -68,7 +67,7 @@ class Scenario1(Scenario):
if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']): if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']):
return return
if ((self._context['test_passed_counter'] + self._context['test_failed_counter']) if (self._context['test_limit'] and (self._context['test_passed_counter'] + self._context['test_failed_counter'])
>= self._context['test_limit']): >= self._context['test_limit']):
return return

@ -27,7 +27,6 @@ class Scenario2(Scenario):
def __init__(self, context): def __init__(self, context):
context['use_jellyfin'] = True
context['use_tmdb'] = False context['use_tmdb'] = False
context['use_pattern'] = False context['use_pattern'] = False
@ -56,18 +55,11 @@ class Scenario2(Scenario):
assertFuncList = targetYieldObj['assertFuncs'] assertFuncList = targetYieldObj['assertFuncs']
shouldFail = targetYieldObj['shouldFail'] shouldFail = targetYieldObj['shouldFail']
try:
jellyfinSelectorIndex = assertSelectorList.index('J')
jellyfinVariant = variantList[jellyfinSelectorIndex]
testContext['use_jellyfin'] = jellyfinVariant == 'J1'
except ValueError:
jellyfinSelectorIndex = -1
if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']): if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']):
return return
if ((self._context['test_passed_counter'] + self._context['test_failed_counter']) if (self._context['test_limit'] and (self._context['test_passed_counter'] + self._context['test_failed_counter'])
>= self._context['test_limit']): >= self._context['test_limit']):
return return
@ -130,10 +122,6 @@ class Scenario2(Scenario):
resultFileProperties = FileProperties(testContext, resultFile) resultFileProperties = FileProperties(testContext, resultFile)
resultMediaDescriptor = resultFileProperties.getMediaDescriptor() resultMediaDescriptor = resultFileProperties.getMediaDescriptor()
# if testContext['use_jellyfin']:
# sourceMediaDescriptor.applyJellyfinOrder()
# resultMediaDescriptor.applySourceIndices(sourceMediaDescriptor)
resultMediaTracks = resultMediaDescriptor.getAllTrackDescriptors() resultMediaTracks = resultMediaDescriptor.getAllTrackDescriptors()
for assertIndex in range(len(assertSelectorList)): for assertIndex in range(len(assertSelectorList)):

@ -110,18 +110,11 @@ class Scenario4(Scenario):
assertFuncList = presetYieldObj['assertFuncs'] assertFuncList = presetYieldObj['assertFuncs']
shouldFail = presetYieldObj['shouldFail'] shouldFail = presetYieldObj['shouldFail']
try:
jellyfinSelectorIndex = assertSelectorList.index('J')
jellyfinVariant = variantList[jellyfinSelectorIndex]
testContext['use_jellyfin'] = jellyfinVariant == 'J1'
except ValueError:
jellyfinSelectorIndex = -1
if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']): if self._context['test_variant'] and not variantIdentifier.startswith(self._context['test_variant']):
return return
if ((self._context['test_passed_counter'] + self._context['test_failed_counter']) if (self._context['test_limit'] and (self._context['test_passed_counter'] + self._context['test_failed_counter'])
>= self._context['test_limit']): >= self._context['test_limit']):
return return
@ -232,9 +225,6 @@ class Scenario4(Scenario):
for l in rmd.getConfiguration(label = 'resultMediaDescriptor'): for l in rmd.getConfiguration(label = 'resultMediaDescriptor'):
self._logger.debug(l) self._logger.debug(l)
# if testContext['use_jellyfin']:
# sourceMediaDescriptor.applyJellyfinOrder()
# num tracks differ # num tracks differ
rmd.applySourceIndices(sourceMediaDescriptor) rmd.applySourceIndices(sourceMediaDescriptor)

Loading…
Cancel
Save