Skip to content

Commit

Permalink
Update sbox.py
Browse files Browse the repository at this point in the history
Added subtitle validation to selected files. The script identifies files without subtitles. For files, whose subtitles exist, it returns languages common to all files. Everything still works, even if only one file is selected.
  • Loading branch information
mihakodric committed Apr 17, 2020
1 parent 4d524b5 commit 88aa0f9
Showing 1 changed file with 66 additions and 12 deletions.
78 changes: 66 additions & 12 deletions sbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ def request_subtitle_languages(file_path):
available_languages = k.split(",")
return available_languages
else:
print("Oops!! Subtitle not found.")
sys.exit()
available_languages = None
return available_languages


def download(file_path, data):
Expand All @@ -86,6 +86,47 @@ def download(file_path, data):
f.close()


def existence_of_subtitles_regarding_selected_files(files_path):
all_available_languages_selection = []
for file_path in files_path:
try:
all_available_languages_selection.append(
request_subtitle_languages(file_path))
except:
print("\nThe selected file cannot be used to find subtitles:")
print(f" x {os.path.basename(file_path)}")
print("\nCancelled")
sys.exit()
return all_available_languages_selection


def bool_exsistence_of_subtitile_regarding_seleceted_files(all_available_languages_selection):
bool_find_subtitiles = np.ones(
len(all_available_languages_selection), dtype=bool)
loc_none = []
if None in all_available_languages_selection:
loc_none = [i for i, x in enumerate(
all_available_languages_selection) if x == None]
bool_find_subtitiles[loc_none] = False
return bool_find_subtitiles, loc_none


def select_files_with_subtitles(all_files, bool_loc):
return np.asarray(all_files)[bool_loc]


def common_languages_appearing_in_all_files(all_available_languages_selection, lang):
availability_in_all_files = []
if all_available_languages_selection.size>0:
for _lang in lang:
availability_in_all_files.append(all((_lang in x)
for x in all_available_languages_selection))
return np.asarray(lang)[availability_in_all_files]
else:
print("There is no common language available for the selected files.")
sys.exit()


def main(cli_file_path, language_code_cli):
banner = r'''
___ ___ ___ __ __
Expand All @@ -109,23 +150,36 @@ def main(cli_file_path, language_code_cli):
print("File does not exist.")
sys.exit()

# Check, which files do and do not have subtitle file
all_available_languages_full = existence_of_subtitles_regarding_selected_files(
files_path)
find_subtitiles, loc_none = bool_exsistence_of_subtitile_regarding_seleceted_files(
all_available_languages_full)
# Check, which languages appears in all requested episodes
all_available_languages = []
for file_path in files_path:
all_available_languages.append(request_subtitle_languages(file_path))
all_available_languages = select_files_with_subtitles(
all_available_languages_full, find_subtitiles)
available_languages = common_languages_appearing_in_all_files(
all_available_languages, lang)

if False in find_subtitiles:
print("\nSubtitle file is not available for following files:\n")
for i in loc_none:
print(f" x {os.path.basename(files_path[i])}")
if True in find_subtitiles:
print("________________________________________________________")

files_path = select_files_with_subtitles(files_path, find_subtitiles)

availability_in_all = []
for _lang in lang:
availability_in_all.append(all((_lang in x)
for x in all_available_languages))
available_languages = np.asarray(lang)[availability_in_all]
print("\nSubtitles are available for following files:\n")
for file in files_path:
print(f" - {os.path.basename(file)}")

try:
if len(files_path) == 1:
print("\nSubtitle file are available in following languages...\n")
print("\nSubtitles are available in following languages...\n")
elif len(files_path) > 1:
print(
"\nSubtitle file for all selected files are available in following languages...\n")
"\nSubtitles for all selected files are available in following languages...\n")
except:
print("\nError\n")

Expand Down

0 comments on commit 88aa0f9

Please sign in to comment.