@ -324,6 +324,7 @@ class MediaDescriptor:
return importFileTokens
return importFileTokens
def getInputMappingTokens ( self , use_sub_index : bool = True , only_video : bool = False ) :
def getInputMappingTokens ( self , use_sub_index : bool = True , only_video : bool = False ) :
# reorderedTrackDescriptors = self.getReorderedTrackDescriptors()
# reorderedTrackDescriptors = self.getReorderedTrackDescriptors()
@ -363,11 +364,11 @@ class MediaDescriptor:
return inputMappingTokens
return inputMappingTokens
def searchSubtitleFiles ( searchDirectory , prefix ) :
def searchSubtitleFiles ( self , searchDirectory , prefix ) :
sesl_match = re . compile ( MediaDescriptor . SEASON_EPISODE_STREAM_LANGUAGE_MATCH )
sesl_match = re . compile ( MediaDescriptor . SEASON_EPISODE_STREAM_LANGUAGE_MATCH )
availableFileSubtit leDescriptors = [ ]
subtitleFi leDescriptors = [ ]
for subtitleFilename in os . listdir ( searchDirectory ) :
for subtitleFilename in os . listdir ( searchDirectory ) :
if subtitleFilename . startswith ( prefix ) and subtitleFilename . endswith (
if subtitleFilename . startswith ( prefix ) and subtitleFilename . endswith (
" . " + MediaDescriptor . SUBTITLE_FILE_EXTENSION
" . " + MediaDescriptor . SUBTITLE_FILE_EXTENSION
@ -381,48 +382,48 @@ class MediaDescriptor:
subtitleFileDescriptor [ " path " ] = subtitleFilePath
subtitleFileDescriptor [ " path " ] = subtitleFilePath
subtitleFileDescriptor [ " season " ] = int ( sesl_result . group ( 1 ) )
subtitleFileDescriptor [ " season " ] = int ( sesl_result . group ( 1 ) )
subtitleFileDescriptor [ " episode " ] = int ( sesl_result . group ( 2 ) )
subtitleFileDescriptor [ " episode " ] = int ( sesl_result . group ( 2 ) )
subtitleFileDescriptor [ " stream " ] = int ( sesl_result . group ( 3 ) )
subtitleFileDescriptor [ " index " ] = int ( sesl_result . group ( 3 ) )
subtitleFileDescriptor [ " language " ] = sesl_result . group ( 4 )
subtitleFileDescriptor [ " language " ] = sesl_result . group ( 4 )
availableFileSubtit leDescriptors. append ( subtitleFileDescriptor )
subtitleFi leDescriptors. append ( subtitleFileDescriptor )
click . echo (
click . echo ( f " Available subtitle files { subtitleFileDescriptors } \n " )
f " Found { len ( availableFileSubtitleDescriptors ) } subtitles in files \n "
)
return availableFileSubtit leDescriptors
return subtitleFileDescriptors
def importSubtitles (
self , searchDirectory , prefix , season : int = - 1 , episode : int = - 1
) :
availableFileSubtitleDescriptors = self . searchSubtitleFiles (
def importSubtitles ( self , searchDirectory , prefix , season : int = - 1 , episode : int = - 1 ) :
searchDirectory , prefix
)
click . echo ( f " Season: { season } Episode: { episode } " )
availableFileSubtitleDescriptors = self . searchSubtitleFiles ( searchDirectory , prefix )
click . echo ( f " availableFileSubtitleDescriptors: { availableFileSubtitleDescriptors } " )
subtitleTracks = self . getSubtitleTracks ( )
subtitleTracks = self . getSubtitleTracks ( )
click . echo ( f " subtitleTracks: { [ s . getIndex ( ) for s in subtitleTracks ] } " )
# if len(availableFileSubtitleDescriptors) != len(subtitleTracks):
# if len(availableFileSubtitleDescriptors) != len(subtitleTracks):
# raise click.ClickException(f"MediaDescriptor.importSubtitles(): Number if subtitle files not matching number of subtitle tracks")
# raise click.ClickException(f"MediaDescriptor.importSubtitles(): Number if subtitle files not matching number of subtitle tracks")
matching File SubtitleDescriptors = (
matching SubtitleFi leDescriptors = (
sorted (
sorted (
[
[
d
d
for d in availableFileSubtitleDescriptors
for d in availableFileSubtitleDescriptors
if d [ " season " ] == int ( season ) and d [ " episode " ] == int ( episode )
if d [ " season " ] == int ( season ) and d [ " episode " ] == int ( episode )
] ,
] ,
key = lambda d : d [ " stream " ] ,
key = lambda d : d [ " index " ] ,
)
)
if availableFileSubtitleDescriptors
if availableFileSubtitleDescriptors
else [ ]
else [ ]
)
)
for mfsd in matchingFileSubtitleDescriptors :
click . echo ( f " matchingSubtitleFileDescriptors: { matchingSubtitleFileDescriptors } " )
matchingSubtitleTrackDescriptor = [
s for s in subtitleTracks if s . getIndex ( ) == mfsd [ " stream " ]
for msfd in matchingSubtitleFileDescriptors :
]
matchingSubtitleTrackDescriptor = [ s for s in subtitleTracks if s . getIndex ( ) == msfd [ " index " ] ]
if matchingSubtitleTrackDescriptor :
if matchingSubtitleTrackDescriptor :
matchingSubtitleTrackDescriptor [ 0 ] . setExternalSourceFilePath (
click . echo ( f " Found matching subtitle file { msfd [ " path " ] } \n " )
mfsd [ " path " ]
matchingSubtitleTrackDescriptor [ 0 ] . setExternalSourceFilePath ( msfd [ " path " ] )
)