Skip to content

Commit 7358e33

Browse files
authored
Add files via upload
1 parent 7072376 commit 7358e33

File tree

5 files changed

+200
-103
lines changed

5 files changed

+200
-103
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ android {
2626
minSdkVersion 23
2727
targetSdkVersion 30
2828
versionCode 2
29-
versionName "2.9.1"
29+
versionName "2.9.2"
3030

3131
ndk {
3232
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"

app/src/main/java/com/android/autosrt/TranscribeActivity.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -416,12 +416,14 @@ private void transcribe() {
416416
Log.d("transcribe", SUBTITLE.SAVED_FILE[i].toString() + " created");
417417
appendText(textview_output_messages_2, equalChars + "\n");
418418
appendText(textview_output_messages_2, "Overall results for '" + MEDIA_FILE.DISPLAY_NAME_LIST.get(i) + "' : \n");
419-
appendText(textview_output_messages_2, SUBTITLE.SAVED_FILE[i].toString() + "\n");
419+
appendText(textview_output_messages_2, equalChars + "\n");
420+
appendText(textview_output_messages_2, SUBTITLE.SAVED_FILE[i] + "\n");
420421

421422
if (!Objects.equals(LANGUAGE.SRC_CODE, LANGUAGE.DST_CODE)) {
422423
String savedDstSubtitleFilePath = StringUtils.replace(SUBTITLE.SAVED_FILE[i].toString(), LANGUAGE.SRC_CODE + ".srt", LANGUAGE.DST_CODE + ".srt");
423424
Log.d("transcribe", "savedDstSubtitleFilePath = " + savedDstSubtitleFilePath);
424425
if (new File(savedDstSubtitleFilePath).exists() && new File(savedDstSubtitleFilePath).length() > 1) {
426+
appendText(textview_output_messages_2, equalChars + "\n");
425427
appendText(textview_output_messages_2, savedDstSubtitleFilePath + "\n");
426428
}
427429
}
@@ -430,7 +432,6 @@ private void transcribe() {
430432
appendText(textview_output_messages_2, equalChars + "\n");
431433
appendText(textview_output_messages_2, SUBTITLE_EMBEDDED.SAVED_FILE_PATH_LIST[i] + "\n");
432434
}
433-
434435
appendText(textview_output_messages_2, equalChars + "\n");
435436
}
436437

@@ -451,12 +452,14 @@ private void transcribe() {
451452
Log.d("transcribe", SUBTITLE.SAVED_FILE[i] + " created");
452453
appendText(textview_output_messages_2, equalChars + "\n");
453454
appendText(textview_output_messages_2, "Overall results for '" + MEDIA_FILE.DISPLAY_NAME_LIST.get(i) + "' : \n");
455+
appendText(textview_output_messages_2, equalChars + "\n");
454456
appendText(textview_output_messages_2, SUBTITLE.SAVED_FILE[i] + "\n");
455457

456458
if (!Objects.equals(LANGUAGE.SRC_CODE, LANGUAGE.DST_CODE)) {
457459
String savedDstSubtitleFilePath = StringUtils.replace(SUBTITLE.SAVED_FILE[i].toString(), LANGUAGE.SRC_CODE + ".srt", LANGUAGE.DST_CODE + ".srt");
458460
Log.d("transcribe", "savedDstSubtitleFilePath = " + savedDstSubtitleFilePath);
459461
if (new File(savedDstSubtitleFilePath).exists() && new File(savedDstSubtitleFilePath).length() > 1) {
462+
appendText(textview_output_messages_2, equalChars + "\n");
460463
appendText(textview_output_messages_2, savedDstSubtitleFilePath + "\n");
461464
}
462465
}
@@ -465,7 +468,6 @@ private void transcribe() {
465468
appendText(textview_output_messages_2, equalChars + "\n");
466469
appendText(textview_output_messages_2, SUBTITLE_EMBEDDED.SAVED_FILE_PATH_LIST[i] + "\n");
467470
}
468-
469471
appendText(textview_output_messages_2, equalChars + "\n");
470472
}
471473
}
@@ -1468,13 +1470,13 @@ private void adjustOutputMessagesHeight() {
14681470
Log.d("adjustOutputMessagesHeight", "dashMaxChars = " + dashMaxChars);
14691471
if (equalMaxChars > 0) {
14701472
equalChars = StringUtils.repeat('=', equalMaxChars - 2);
1471-
Log.d("adjustOutputMessagesHeight", "equalChars = " + equalChars);
1473+
//Log.d("adjustOutputMessagesHeight", "equalChars = " + equalChars);
14721474
Log.d("adjustOutputMessagesHeight", "equalChars.length() = " + equalChars.length());
14731475
storeStringToFile(TranscribeActivity.this, equalChars, "equalChars");
14741476
}
14751477
if (dashMaxChars > 0) {
14761478
dashChars = StringUtils.repeat('-', dashMaxChars - 4);
1477-
Log.d("adjustOutputMessagesHeight", "dashChars = " + dashChars);
1479+
//Log.d("adjustOutputMessagesHeight", "dashChars = " + dashChars);
14781480
Log.d("adjustOutputMessagesHeight", "dashChars.length() = " + dashChars.length());
14791481
storeStringToFile(TranscribeActivity.this, dashChars, "dashChars");
14801482
}
@@ -1586,7 +1588,7 @@ public String readStringFromFile(Context context, String fileName) {
15861588
int b = fileInputStream.read(buffer);
15871589
Log.d("readStringFromFile", "b = " + b);
15881590
fileInputStream.close();
1589-
Log.d("readStringFromFile", "new String(buffer) = " + new String(buffer));
1591+
//Log.d("readStringFromFile", "new String(buffer) = " + new String(buffer));
15901592
return new String(buffer);
15911593
}
15921594
catch (IOException e) {

app/src/main/python/autosrt.py

Lines changed: 125 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -858,9 +858,9 @@ def get_subtitle_languages_and_duration(self, media_filepath):
858858
media_filepath
859859
]
860860

861+
Config.enableRedirection()
861862
FFprobe.execute(command)
862863
output = Config.getLastCommandOutput()
863-
864864
metadata = json.loads(output)
865865
streams = metadata['streams']
866866
duration = int(float(metadata['format']['duration'])*1000)
@@ -1396,9 +1396,9 @@ def get_subtitle_languages_and_duration(self, media_filepath):
13961396
media_filepath
13971397
]
13981398

1399+
Config.enableRedirection()
13991400
FFprobe.execute(command)
14001401
output = Config.getLastCommandOutput()
1401-
14021402
metadata = json.loads(output)
14031403
streams = metadata['streams']
14041404
duration = int(float(metadata['format']['duration'])*1000)
@@ -1476,9 +1476,9 @@ def get_subtitle_languages_and_duration(self, media_filepath):
14761476
media_filepath
14771477
]
14781478

1479+
Config.enableRedirection()
14791480
FFprobe.execute(command)
14801481
output = Config.getLastCommandOutput()
1481-
14821482
metadata = json.loads(output)
14831483
streams = metadata['streams']
14841484
duration = int(float(metadata['format']['duration'])*1000)
@@ -1569,9 +1569,9 @@ def get_subtitle_languages_and_duration(self, media_filepath):
15691569
media_filepath
15701570
]
15711571

1572+
Config.enableRedirection()
15721573
FFprobe.execute(command)
15731574
output = Config.getLastCommandOutput()
1574-
15751575
metadata = json.loads(output)
15761576
streams = metadata['streams']
15771577
duration = int(float(metadata['format']['duration'])*1000)
@@ -1636,6 +1636,89 @@ def __call__(self, media_filepath):
16361636
return
16371637

16381638

1639+
def check_file_type(media_filepath, error_messages_callback=None):
1640+
if not os.path.isfile(media_filepath):
1641+
if error_messages_callback:
1642+
error_messages_callback(f"The given file does not exist: '{media_filepath}'")
1643+
else:
1644+
print(f"The given file does not exist: '{media_filepath}'")
1645+
raise Exception(f"Invalid file: '{media_filepath}'")
1646+
1647+
try:
1648+
command = [
1649+
'-hide_banner',
1650+
'-v', 'error',
1651+
'-loglevel', 'error',
1652+
'-of', 'json',
1653+
'-show_entries',
1654+
'format:stream',
1655+
media_filepath
1656+
]
1657+
1658+
Config.enableRedirection()
1659+
FFprobe.execute(command)
1660+
output = Config.getLastCommandOutput()
1661+
metadata = json.loads(output)
1662+
streams = metadata['streams']
1663+
1664+
for stream in streams:
1665+
if 'codec_type' in stream and stream['codec_type'] == 'audio':
1666+
return 'audio'
1667+
elif 'codec_type' in stream and stream['codec_type'] == 'video':
1668+
return 'video'
1669+
1670+
except Exception as e:
1671+
if error_messages_callback:
1672+
error_messages_callback(e)
1673+
else:
1674+
print(e)
1675+
1676+
return None
1677+
1678+
1679+
def has_subtitles(media_filepath, error_messages_callback=None):
1680+
if not os.path.isfile(media_filepath):
1681+
if error_messages_callback:
1682+
error_messages_callback(f"The given file does not exist: '{media_filepath}'")
1683+
else:
1684+
print(f"The given file does not exist: '{media_filepath}'")
1685+
raise Exception(f"Invalid file: '{media_filepath}'")
1686+
1687+
try:
1688+
ffmpeg_cmd = [
1689+
'ffmpeg',
1690+
'-hide_banner',
1691+
'-v', 'error',
1692+
'-loglevel', 'error',
1693+
'-y',
1694+
'-i', media_filepath,
1695+
'-map', '0:s:0',
1696+
'-c:s', 'text',
1697+
subtitle_filepath
1698+
]
1699+
1700+
Config.enableRedirection()
1701+
FFmpeg.execute(ffmpeg_command)
1702+
output = Config.getLastCommandOutput()
1703+
1704+
if os.path.isfile(subtitle_filepath):
1705+
srt_file_reader = SRTFileReader()
1706+
timed_subtitles = srt_file_reader(subtitle_filepath)
1707+
else:
1708+
timed_subtitles = None
1709+
1710+
if timed_subtitles:
1711+
return True # Subtitles detected
1712+
else:
1713+
return False # No subtitles detected
1714+
1715+
except Exception as e:
1716+
if error_messages_callback:
1717+
error_messages_callback(e)
1718+
else:
1719+
print(e)
1720+
return False
1721+
16391722

16401723
def is_same_language(lang1, lang2):
16411724
return lang1.split("-")[0] == lang2.split("-")[0]
@@ -1740,6 +1823,8 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
17401823
base, ext = os.path.splitext(media_filepath)
17411824
media_file_display_name = os.path.basename(media_filepath).split('/')[-1]
17421825
print(f"media_file_display_name = '{media_file_display_name}'")
1826+
media_type = check_file_type(media_filepath)
1827+
print(f"media_type = '{media_type}'")
17431828
media_file_format = ext[1:]
17441829
print(f"media_file_format = '{media_file_format}'")
17451830

@@ -1769,7 +1854,7 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
17691854
activity.runOnUiThread(appendText(textview_output_messages, "Running python script...\n"))
17701855

17711856
# CHECKING SUBTITLE STREAMS
1772-
if force_recognize == False:
1857+
if media_type == "video" and force_recognize == False:
17731858

17741859
src_subtitle_filepath = None
17751860
dst_subtitle_filepath = None
@@ -2404,35 +2489,35 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
24042489
os.mkdir(subtitle_folder_name)
24052490

24062491
base, ext = os.path.splitext(media_filepath)
2407-
24082492
if ext[1:] == "ts":
24092493
media_file_format = "mp4"
24102494
else:
24112495
media_file_format = ext[1:]
24122496

2413-
tmp_force_recognize_media_filepath = f"{subtitle_folder_name + os.sep + media_file_display_name[:-len(media_file_format)-1]}.tmp.force.recognize.{media_file_format}"
2497+
if has_subtitles(media_filepath):
2498+
tmp_force_recognize_media_filepath = f"{subtitle_folder_name + os.sep + media_file_display_name[:-len(media_file_format)-1]}.tmp.force.recognize.{media_file_format}"
24142499

2415-
activity.runOnUiThread(setVisibility(textview_progress, progress_bar, textview_percentage, textview_time, View.VISIBLE))
2416-
print("Removing subtitle streams...")
2417-
activity.runOnUiThread(appendText(textview_output_messages, "Removing subtitle streams...\n"))
2418-
remove_subtitle_streams_start_time = time.time()
2419-
pbar(0, remove_subtitle_streams_start_time, 100, "Removing subtitle streams", activity, textview_progress, progress_bar, textview_percentage, textview_time)
2420-
Config.enableRedirection()
2500+
activity.runOnUiThread(setVisibility(textview_progress, progress_bar, textview_percentage, textview_time, View.VISIBLE))
2501+
print("Removing subtitle streams...")
2502+
activity.runOnUiThread(appendText(textview_output_messages, "Removing subtitle streams...\n"))
2503+
remove_subtitle_streams_start_time = time.time()
2504+
pbar(0, remove_subtitle_streams_start_time, 100, "Removing subtitle streams", activity, textview_progress, progress_bar, textview_percentage, textview_time)
2505+
Config.enableRedirection()
24212506

2422-
subtitle_remover = MediaSubtitleRemover(output_path=tmp_force_recognize_media_filepath, start_time=remove_subtitle_streams_start_time, activity=activity, textview_progress=textview_progress, progress_bar=progress_bar, textview_percentage=textview_percentage, textview_time=textview_time)
2423-
tmp_output = subtitle_remover(media_filepath)
2507+
subtitle_remover = MediaSubtitleRemover(output_path=tmp_force_recognize_media_filepath, start_time=remove_subtitle_streams_start_time, activity=activity, textview_progress=textview_progress, progress_bar=progress_bar, textview_percentage=textview_percentage, textview_time=textview_time)
2508+
tmp_output = subtitle_remover(media_filepath)
24242509

2425-
Config.disableRedirection()
2426-
pbar(100, remove_subtitle_streams_start_time, 100, "Removing subtitle streams", activity, textview_progress, progress_bar, textview_percentage, textview_time)
2427-
time.sleep(1)
2510+
Config.disableRedirection()
2511+
pbar(100, remove_subtitle_streams_start_time, 100, "Removing subtitle streams", activity, textview_progress, progress_bar, textview_percentage, textview_time)
2512+
time.sleep(1)
24282513

2429-
print(f"Subtitle streams removed")
2430-
activity.runOnUiThread(appendText(textview_output_messages, "Subtitle streams removed\n"))
2431-
activity.runOnUiThread(setVisibility(textview_progress, progress_bar, textview_percentage, textview_time, View.INVISIBLE))
2514+
print(f"Subtitle streams removed")
2515+
activity.runOnUiThread(appendText(textview_output_messages, "Subtitle streams removed\n"))
2516+
activity.runOnUiThread(setVisibility(textview_progress, progress_bar, textview_percentage, textview_time, View.INVISIBLE))
24322517

2433-
if os.path.isfile(tmp_output):
2434-
shutil.copy(tmp_output, media_filepath)
2435-
os.remove(tmp_output)
2518+
if os.path.isfile(tmp_output):
2519+
shutil.copy(tmp_output, media_filepath)
2520+
os.remove(tmp_output)
24362521

24372522

24382523
# TRANSCRIBE PART
@@ -2713,9 +2798,17 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
27132798

27142799
#activity.runOnUiThread(setVisibility(textview_progress, progress_bar, textview_percentage, textview_time, View.VISIBLE))
27152800

2801+
print(f"media_type = {media_type}")
2802+
print(f"embed_src = {embed_src}")
2803+
print(f"embed_dst = {embed_dst}")
2804+
27162805
if is_same_language(src, dst):
27172806

2718-
if embed_src == True:
2807+
if media_type == "audio":
2808+
print("Subtitles can only be embedded into video file, not audio file")
2809+
activity.runOnUiThread(appendText(textview_output_messages, "Subtitles can only be embedded into video file, not audio file\n"))
2810+
2811+
if media_type == "video" and embed_src == True:
27192812
try:
27202813
print(f"Embedding '{ffmpeg_src_language_code}' subtitles...")
27212814
activity.runOnUiThread(appendText(textview_output_messages, f"Embedding '{ffmpeg_src_language_code}' subtitles...\n"))
@@ -2759,7 +2852,11 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
27592852

27602853
elif not is_same_language(src, dst):
27612854

2762-
if embed_src == True and embed_dst == True:
2855+
if media_type == "audio":
2856+
print("Subtitles can only be embedded into video file, not audio file")
2857+
activity.runOnUiThread(appendText(textview_output_messages, "Subtitles can only be embedded into video file, not audio file\n"))
2858+
2859+
if media_type == "video" and embed_src == True and embed_dst == True:
27632860
try:
27642861
print(f"Embedding '{ffmpeg_src_language_code}' subtitles...")
27652862
activity.runOnUiThread(appendText(textview_output_messages, f"Embedding '{ffmpeg_src_language_code}' subtitles...\n"))
@@ -2828,7 +2925,7 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
28282925
pool.join()
28292926
return
28302927

2831-
elif embed_src == True and embed_dst == False:
2928+
elif media_type == "video" and embed_src == True and embed_dst == False:
28322929
try:
28332930

28342931
print(f"Embedding '{ffmpeg_src_language_code}' subtitles...")
@@ -2879,7 +2976,7 @@ def transcribe(src, dst, media_filepath, media_file_display_name, subtitle_forma
28792976
pool.join()
28802977
return
28812978

2882-
elif embed_src == False and embed_dst == True:
2979+
elif media_type == "video" and embed_src == False and embed_dst == True:
28832980
try:
28842981

28852982
print(f"Embedding '{ffmpeg_dst_language_code}' subtitles...")

0 commit comments

Comments
 (0)