Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
botbahlul authored Jul 13, 2023
1 parent 5bba3b2 commit 50755f3
Showing 1 changed file with 79 additions and 39 deletions.
118 changes: 79 additions & 39 deletions linux/autosrt.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import shutil


VERSION = "1.4.4"
VERSION = "1.4.5"


class Language:
Expand Down Expand Up @@ -960,7 +960,7 @@ def __call__(self, wav_filepath):

except Exception as e:
if self.error_messages_callback:
self.error_messages_callback(e)
self.error_messages_callback(f"SpeechRegionFinder: {e}")
else:
print(e)
return
Expand Down Expand Up @@ -1044,14 +1044,14 @@ def __call__(self, region):

except Exception as e:
if self.error_messages_callback:
self.error_messages_callback(e)
self.error_messages_callback(f"FLACConverter: {e}")
else:
print(e)
return


class SpeechRecognizer(object):
def __init__(self, language="en", rate=44100, retries=3, api_key="AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw", timeout=30, error_messages_callback=None):
def __init__(self, language="en", rate=48000, retries=3, api_key="AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw", timeout=30, error_messages_callback=None):
self.language = language
self.rate = rate
self.api_key = api_key
Expand Down Expand Up @@ -2861,6 +2861,7 @@ def main():
remove_temp_files("wav", error_messages_callback=show_error_messages)

parser = argparse.ArgumentParser()

parser.add_argument('source_path', help="Path to the media files to generate subtitles files (use wildcard for multiple files or separate them with a space character e.g. \"file 1.mp4\" \"file 2.mp4\")", nargs='*')
parser.add_argument('-S', '--src-language', help="Language code of the audio language spoken in media file source_path", default="en")
parser.add_argument('-D', '--dst-language', help="Desired translation language code for the subtitles", default=None)
Expand All @@ -2880,8 +2881,6 @@ def main():
if args.list_languages:
print("List of supported languages:")
for code, language in sorted(language.name_of_code.items()):
#print("{code}\t{language}".format(code=code, language=language))
#print("%8s\t%s" %(code, language))
print("%-8s : %s" %(code, language))
return 0

Expand Down Expand Up @@ -2923,6 +2922,7 @@ def main():
not_exist_filepaths = []
argpath = None
media_type = None
media_format = None

#for arg in args.source_path:
# print("escape(arg) = %s" %(escape(arg)))
Expand Down Expand Up @@ -3020,7 +3020,7 @@ def main():

ffmpeg_src_language_code = language.ffmpeg_code_of_code[args.src_language]

print("Checking %s" %media_filepath)
print(f"Checking '{media_filepath}'")

subtitle_stream_parser = SubtitleStreamParser(error_messages_callback=show_error_messages)
subtitle_streams_data = subtitle_stream_parser(media_filepath)
Expand Down Expand Up @@ -3088,7 +3088,7 @@ def main():
subtitle_stream_parser = SubtitleStreamParser(error_messages_callback=show_error_messages)
subtitle_streams_data = subtitle_stream_parser(media_filepath)

print("Checking %s" %media_filepath)
print(f"Checking '{media_filepath}'")

if subtitle_streams_data and subtitle_streams_data != []:

Expand Down Expand Up @@ -3163,7 +3163,7 @@ def main():
translation_writer = SubtitleWriter(subtitle_stream_regions, translated_subtitle_stream_transcripts, subtitle_format, error_messages_callback=show_error_messages)
translation_writer.write(src_subtitle_filepath)

print("Translated subtitles file saved as : {}" .format(src_subtitle_filepath))
print(f"Translated subtitles file saved as : '{src_subtitle_filepath}'")

# remove media_filepath from transcribe proceed_list because all needed srt files already saved
if args.force_recognize == False:
Expand All @@ -3176,8 +3176,14 @@ def main():
ffmpeg_src_language_code = language.ffmpeg_code_of_code[args.src_language]

base, ext = os.path.splitext(media_filepath)
src_tmp_embedded_media_filepath = "{base}.{src}.tmp.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{src}.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

src_tmp_embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.embedded.{media_format}"

widgets = [f"Embedding '{ffmpeg_src_language_code}' subtitles into {media_type} : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3190,7 +3196,7 @@ def main():
os.remove(src_tmp_output)

if os.path.isfile(embedded_media_filepath):
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")

# if args.embed_dst is True we can't embed it because dst subtitles stream already exist
if args.embed_dst == True and dst_subtitle_stream_timed_subtitles and dst_subtitle_stream_timed_subtitles != []:
Expand All @@ -3215,12 +3221,12 @@ def main():
pbar.finish()

base, ext = os.path.splitext(media_filepath)
dst_subtitle_filepath = "{base}.{dst}.{format}".format(base=base, dst=args.dst_language, format=subtitle_format)
dst_subtitle_filepath = f"{base}.{args.dst_language}.{subtitle_format}"

translation_writer = SubtitleWriter(subtitle_stream_regions, translated_subtitle_stream_transcripts, subtitle_format, error_messages_callback=show_error_messages)
translation_writer.write(dst_subtitle_filepath)

print("Translated subtitles file saved as : {}" .format(dst_subtitle_filepath))
print(f"Translated subtitles file saved as : '{dst_subtitle_filepath}'")

# remove media_filepath from transcribe proceed_list because all needed srt files already saved
if args.force_recognize == False:
Expand All @@ -3237,8 +3243,14 @@ def main():
ffmpeg_dst_language_code = language.ffmpeg_code_of_code[args.dst_language]

base, ext = os.path.splitext(media_filepath)
dst_tmp_embedded_media_filepath = "{base}.{dst}.tmp.embedded.{format}".format(base=base, dst=ffmpeg_dst_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{dst}.embedded.{format}".format(base=base, dst=ffmpeg_dst_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

dst_tmp_embedded_media_filepath = f"{base}.{ffmpeg_dst_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_dst_language_code}.embedded.{media_format}"

widgets = [f"Embedding '{ffmpeg_dst_language_code}' subtitles into {media_type} : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3251,7 +3263,7 @@ def main():
os.remove(dst_tmp_output)

if os.path.isfile(embedded_media_filepath):
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")

# ffmpeg_dst_language_code subtitles stream = exist
# ffmpeg_src_language_code subtitles stream = exist
Expand Down Expand Up @@ -3301,10 +3313,14 @@ def main():
if args.force_recognize == True:
for media_filepath in media_filepaths:
base, ext = os.path.splitext(media_filepath)
tmp_subtitle_removed_media_filepath = "{base}.tmp.subtitles.removed.media_filepath.{format}".format(base=base, format=ext[1:])
subtitle_removed_media_filepath = "{base}.force.recognize.{format}".format(base=base, format=ext[1:])

#src_tmp_output = remove_subtitles_from_media(media_filepath, tmp_subtitle_removed_media_filepath, progress_callback=show_progress, error_messages_callback=show_error_messages)
if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

tmp_subtitle_removed_media_filepath = f"{base}.tmp.subtitles.removed.media_filepath.{media_format}"
subtitle_removed_media_filepath = f"{base}.force.recognize.{media_format}"

widgets = ["Removing subtitles streams from file : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3318,7 +3334,7 @@ def main():

proceed_list.append(subtitle_removed_media_filepath)

print("Subtitle removed {} file saved as : {}".format(media_type, subtitle_removed_media_filepath))
print(f"Subtitle removed {media_type} file saved as : '{subtitle_removed_media_filepath}'")
print("")

# if args.force_recognize is false then we just use modified media_filepaths list
Expand All @@ -3328,7 +3344,7 @@ def main():

# START THE TRANSCRIBE PROCESS
for media_filepath in proceed_list:
print("Processing {}".format(media_filepath))
print(f"Processing '{media_filepath}'")

try:
widgets = ["Converting to a temporary WAV file : ", Percentage(), ' ', Bar(), ' ', ETA()]
Expand Down Expand Up @@ -3390,15 +3406,15 @@ def main():
pbar.finish()

base, ext = os.path.splitext(media_filepath)
dst_subtitle_filepath = "{base}.{dst}.{format}".format(base=base, dst=args.dst_language, format=subtitle_format)
dst_subtitle_filepath = f"{base}.{args.dst_language}.{subtitle_format}"
translation_writer = SubtitleWriter(created_regions, translated_subtitles, subtitle_format, error_messages_callback=show_error_messages)
translation_writer.write(dst_subtitle_filepath)

if do_translate == True:
print("Original subtitles file saved as : {}".format(src_subtitle_filepath))
print("Translated subtitles file saved as : {}" .format(dst_subtitle_filepath))
print(f"Original subtitles file saved as : '{src_subtitle_filepath}'")
print(f"Translated subtitles file saved as : '{dst_subtitle_filepath}'")
else:
print("Subtitles file saved as : {}".format(src_subtitle_filepath))
print(f"Subtitles file saved as : '{src_subtitle_filepath}'")


# EMBEDDING SUBTITLES FILE
Expand All @@ -3410,8 +3426,14 @@ def main():
ffmpeg_src_language_code = language.ffmpeg_code_of_code[args.src_language]

base, ext = os.path.splitext(media_filepath)
src_tmp_embedded_media_filepath = "{base}.{src}.tmp.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{src}.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

src_tmp_embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.embedded.{media_format}"

widgets = [f"Embedding '{ffmpeg_src_language_code}' subtitles into {media_type} : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3422,7 +3444,7 @@ def main():
if os.path.isfile(src_tmp_output):
shutil.copy(src_tmp_output, embedded_media_filepath)
os.remove(src_tmp_output)
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")

elif do_translate == True:

Expand All @@ -3432,9 +3454,15 @@ def main():
ffmpeg_dst_language_code = language.ffmpeg_code_of_code[args.dst_language]

base, ext = os.path.splitext(media_filepath)
src_tmp_embedded_media_filepath = "{base}.{src}.tmp.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])
src_dst_tmp_embedded_media_filepath = "{base}.{src}.{dst}.tmp.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, dst=ffmpeg_dst_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{src}.{dst}.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, dst=ffmpeg_dst_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

src_tmp_embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.tmp.embedded.{media_format}"
src_dst_tmp_embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.{ffmpeg_dst_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.{ffmpeg_dst_language_code}.embedded.{media_format}"

'''
# USING FUNCTION
Expand All @@ -3461,7 +3489,7 @@ def main():

if os.path.isfile(src_dst_tmp_output):
shutil.copy(src_dst_tmp_output, embedded_media_filepath)
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")
else:
print("Unknown error!")

Expand All @@ -3475,8 +3503,14 @@ def main():
ffmpeg_src_language_code = language.ffmpeg_code_of_code[args.src_language]

base, ext = os.path.splitext(media_filepath)
src_tmp_embedded_media_filepath = "{base}.{src}.tmp.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{src}.embedded.{format}".format(base=base, src=ffmpeg_src_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

src_tmp_embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_src_language_code}.embedded.{media_format}"

widgets = [f"Embedding '{ffmpeg_src_language_code}' subtitles into {media_type} : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3487,7 +3521,7 @@ def main():
if os.path.isfile(src_tmp_output):
shutil.copy(src_tmp_output, embedded_media_filepath)
os.remove(src_tmp_embedded_media_filepath)
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")
else:
print("Unknown error!")

Expand All @@ -3496,8 +3530,14 @@ def main():
ffmpeg_dst_language_code = language.ffmpeg_code_of_code[args.dst_language]

base, ext = os.path.splitext(media_filepath)
dst_tmp_embedded_media_filepath = "{base}.{dst}.tmp.embedded.{format}".format(base=base, dst=ffmpeg_dst_language_code, format=ext[1:])
embedded_media_filepath = "{base}.{dst}.embedded.{format}".format(base=base, dst=ffmpeg_dst_language_code, format=ext[1:])

if ext[1:] == "ts":
media_format = "mp4"
else:
media_format = ext[1:]

dst_tmp_embedded_media_filepath = f"{base}.{ffmpeg_dst_language_code}.tmp.embedded.{media_format}"
embedded_media_filepath = f"{base}.{ffmpeg_dst_language_code}.embedded.{media_format}"

widgets = [f"Embedding '{ffmpeg_dst_language_code}' subtitles into {media_type} : ", Percentage(), ' ', Bar(marker="#"), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=100).start()
Expand All @@ -3508,7 +3548,7 @@ def main():
if os.path.isfile(dst_tmp_output):
shutil.copy(dst_tmp_output, embedded_media_filepath)
os.remove(dst_tmp_output)
print("Subtitle embedded {} file saved as : {}".format(media_type, embedded_media_filepath))
print(f"Subtitle embedded {media_type} file saved as : '{embedded_media_filepath}'")
else:
print("Unknown error!")

Expand Down

0 comments on commit 50755f3

Please sign in to comment.