Maveno 1 year ago
parent f381fad31f
commit 54a3df7f7c

@ -412,16 +412,16 @@ def streams(filename):
@click.option('-dts', '--dts-bitrate', type=int, default=DEFAULT_DTS_BANDWIDTH, help=f"Bitrate in kbit/s to be used to encode 6.1 audio streams (default: {DEFAULT_DTS_BANDWIDTH})")
@click.option('-sd', '--subtitle-directory', type=str, default='', help='Load subtitles from here')
@click.option('-sl', '--subtitle-label', type=str, default='', help='Subtitle filename prefix')
@click.option('-sp', '--subtitle-prefix', type=str, default='', help='Subtitle filename prefix')
@click.option('-ss', '--subtitle-language', type=str, default='', help='Subtitle stream language(s)')
@click.option('-st', '--subtitle-title', type=str, default='', help='Subtitle stream title(s)')
@click.option('-ss', '--subtitle-language', type=str, multiple=True, help='Subtitle stream language(s)')
@click.option('-st', '--subtitle-title', type=str, multiple=True, help='Subtitle stream title(s)')
@click.option('-ds', '--default-subtitle', type=int, default=-1, help='Index of default subtitle stream')
@click.option('-fs', '--forced-subtitle', type=int, default=-1, help='Index of forced subtitle stream') # (including default audio stream tag)
@click.option('-as', '--audio-language', type=str, default='', help='Audio stream language(s)')
@click.option('-at', '--audio-title', type=str, default='', help='Audio stream title(s)')
@click.option('-as', '--audio-language', type=str, multiple=True, help='Audio stream language(s)')
@click.option('-at', '--audio-title', type=str, multiple=True, help='Audio stream title(s)')
@click.option('-da', '--default-audio', type=int, default=-1, help='Index of default audio stream')
@ -449,7 +449,7 @@ def convert(ctx,
ac3_bitrate,
dts_bitrate,
subtitle_directory,
subtitle_label,
subtitle_prefix,
subtitle_language,
subtitle_title,
default_subtitle,
@ -493,17 +493,17 @@ def convert(ctx,
click.echo(f"DTS bitrate: {context['bitrates']['dts']}")
# Parse subtitle files
context['import_subtitles'] = (subtitle_directory and subtitle_label)
context['import_subtitles'] = (subtitle_directory and subtitle_prefix)
se_match = re.compile(SEASON_EPISODE_INDICATOR_MATCH)
e_match = re.compile(EPISODE_INDICATOR_MATCH)
sesl_match = re.compile(SEASON_EPISODE_STREAM_LANGUAGE_MATCH)
availableSubtitles = []
availableFileSubtitles = []
if context['import_subtitles']:
for subtitleFilename in os.listdir(subtitle_directory):
if subtitleFilename.startswith(subtitle_label) and subtitleFilename.endswith('.' + SUBTITLE_FILE_EXTENSION):
if subtitleFilename.startswith(subtitle_prefix) and subtitleFilename.endswith('.' + SUBTITLE_FILE_EXTENSION):
sesl_result = sesl_match.search(subtitleFilename)
if sesl_result is not None:
subtitleFilePath = os.path.join(subtitle_directory, subtitleFilename)
@ -514,16 +514,16 @@ def convert(ctx,
subtitleFileDescriptor['episode'] = int(sesl_result.group(2))
subtitleFileDescriptor['stream'] = int(sesl_result.group(3))
subtitleFileDescriptor['language'] = sesl_result.group(4)
availableSubtitles.append(subtitleFileDescriptor)
availableFileSubtitles.append(subtitleFileDescriptor)
click.echo(f"Found {len(availableSubtitles)} subtitles in files")
click.echo(f"Found {len(availableFileSubtitles)} subtitles in files")
subtitleLanguages = subtitle_language.split(',') if subtitle_language else []
subtitleTitles = subtitle_title.split(',') if subtitle_title else []
subtitleLanguages = subtitle_language
subtitleTitles = subtitle_title
audioLanguages = audio_language.split(',') if audio_language else []
audioTitles = audio_title.split(',') if audio_title else []
audioLanguages = audio_language
audioTitles = audio_title
# Process crop parameters
@ -625,8 +625,8 @@ def convert(ctx,
subtitleFileTokens = []
matchingSubtitles = []
if context['import_subtitles']:
subtitles = [a for a in availableSubtitles if a['season'] == season and a['episode'] == episode]
subtitles = [a for a in availableFileSubtitles if a['season'] == season and a['episode'] == episode]
mSubtitles = sorted(subtitles, key=lambda d: d['stream'])
for sfd in mSubtitles:
@ -636,6 +636,9 @@ def convert(ctx,
mSubtitles[streamIndex]['forced'] = 1 if forced_subtitle != -1 and streamIndex == forced_subtitle else 0
mSubtitles[streamIndex]['default'] = 1 if default_subtitle != -1 and streamIndex == default_subtitle else 0
if streamIndex <= len(subtitleTitles) -1:
mSubtitles[streamIndex]['title'] = subtitleTitles[streamIndex]
if default_subtitle == -1:
matchingSubtitles = mSubtitles
else:
@ -732,6 +735,8 @@ def convert(ctx,
msg = matchingSubtitles[fileIndex]
subtitleMetadataTokens += [f"-metadata:s:s:{fileIndex}", f"language={msg['language']}"]
if 'title' in matchingSubtitles[fileIndex].keys():
subtitleMetadataTokens += [f"-metadata:s:s:{fileIndex}", f"title={matchingSubtitles[fileIndex]['title']}"]
else:

Loading…
Cancel
Save