chompionsawelo's picture
Add google drive option
bef4887
raw
history blame
5.81 kB
from lang_ui import get_ui_lang
import gradio as gr
import file_name
import ffmpeg
import gdown
# Display available langauges and set default UI language
ui_lang_index = 1
available_ui_lang = ["English", "Bahasa Indonesia"]
ui_lang = get_ui_lang(ui_lang_index)
lang_radio_choice = 1
model_dropdown_choice = 2
# Transcribe components
ui_lang_radio = gr.Radio(
available_ui_lang, type="index", value=available_ui_lang[ui_lang_index], interactive=True, show_label=False)
top_markdown = gr.Markdown(
ui_lang["top_markdown"])
input_url = gr.Textbox(
max_lines=1, label=ui_lang["input_url_label"], info=ui_lang["input_url_info"], interactive=True)
url_download_button = gr.Button(
ui_lang["download_button_value"], size='sm', interactive=True)
input_video = gr.Video(
label=ui_lang["input_video_label"], interactive=True)
start_time = gr.Textbox(
max_lines=1, placeholder="00:00:00", label=ui_lang["start_time_label"], interactive=False)
end_time = gr.Textbox(
max_lines=1, placeholder="99:99:99", label=ui_lang["end_time_label"], interactive=False)
lang_radio = gr.Radio(
ui_lang["lang_radio_choices"], label=ui_lang["lang_radio_label"], info=ui_lang["lang_radio_info"], type='index', interactive=True)
model_dropdown = gr.Dropdown(
ui_lang["model_dropdown_choices"], label=ui_lang["model_dropdown_label"], info=ui_lang["model_dropdown_info"], type='index', interactive=True)
summary_checkbox = gr.Checkbox(
label=ui_lang["summary_checkbox_label"], info=ui_lang["summary_checkbox_info"], interactive=False)
start_button = gr.Button(
ui_lang["start_button_value"], variant="primary", interactive=True)
# Adjust components
middle_markdown = gr.Markdown(
ui_lang["middle_markdown"])
adjust_audio = gr.Audio(interactive=False)
adjust_speaker = gr.Textbox(
label=ui_lang["adjust_speaker_value"], interactive=False)
prev_button = gr.Button(ui_lang["prev_button_value"], interactive=False)
next_button = gr.Button(ui_lang["next_button_value"], interactive=False)
adjust_button = gr.Button(
ui_lang["adjust_button_value"], variant="primary", interactive=False)
# Result components
bottom_markdown = gr.Markdown(
ui_lang["bottom_markdown"]
)
output_video = gr.Video(label=ui_lang["output_video_label"], interactive=False)
output_file = gr.File(file_count="multiple", interactive=False)
output_transcribe = gr.Textbox(
label=ui_lang["output_transcribe_label"], interactive=False, show_copy_button=True)
output_summary = gr.Textbox(
interactive=False, show_copy_button=True)
def time_str(t):
return '{0:02d}:{1:02d}:{2:02d}'.format(round(t // 3600),
round(t % 3600 // 60),
round(t % 60))
def get_video_from_url(url):
gr.Info(ui_lang["get_video_start_info"])
download_result = gdown.download(
url, file_name.download_file, quiet=False, fuzzy=True)
if (download_result is None):
gr.Warning(ui_lang["get_video_fail_info"])
return None
gr.Info(ui_lang["get_video_finished_info"])
return file_name.download_file
def get_duration(input_file):
print("Checking file")
if input_file is None:
gr.Warning(ui_lang["input_video_warning"])
return [
start_time.update(None, interactive=False),
end_time.update(None, interactive=False)
]
print("Getting duration")
info_json = ffmpeg.probe(input_file)
print("Probing finished")
duration_seconds = float(info_json['format']['duration'])
duration_formatted = time_str(duration_seconds)
return [
start_time.update("00:00:00", interactive=True),
end_time.update(duration_formatted, interactive=True)
]
# Change language function
def change_lang(input):
global ui_lang
ui_lang = get_ui_lang(input)
print(f"Change language to {available_ui_lang[input]}")
return [
# Top
top_markdown.update(
ui_lang["top_markdown"]),
input_url.update(
label=ui_lang["input_url_label"], info=ui_lang["input_url_info"]),
url_download_button.update(
ui_lang["download_button_value"]),
input_video.update(
label=ui_lang["input_video_label"]),
start_time.update(
label=ui_lang["start_time_label"]),
end_time.update(
label=ui_lang["end_time_label"]),
lang_radio.update(
choices=ui_lang["lang_radio_choices"], value=None, label=ui_lang["lang_radio_label"], info=ui_lang["lang_radio_info"],),
model_dropdown.update(
choices=ui_lang["model_dropdown_choices"], value=None, label=ui_lang["model_dropdown_label"], info=ui_lang["model_dropdown_info"]),
start_button.update(
ui_lang["start_button_value"]),
# Middle
middle_markdown.update(
ui_lang["middle_markdown"]),
adjust_speaker.update(
label=ui_lang["adjust_speaker_value"]),
prev_button.update(
ui_lang["prev_button_value"]),
next_button.update(
ui_lang["next_button_value"]),
adjust_button.update(
ui_lang["adjust_button_value"]),
# Bottom
bottom_markdown.update(
ui_lang["bottom_markdown"]),
output_video.update(
label=ui_lang["output_video_label"]),
output_transcribe.update(
label=ui_lang["output_transcribe_label"]),
]
# comp_to_update and change_lang return must always be in equal number
comp_to_update = [
top_markdown, input_url, url_download_button, input_video, start_time, end_time, lang_radio, model_dropdown, start_button, middle_markdown, adjust_speaker, prev_button, next_button, adjust_button, bottom_markdown, output_video, output_transcribe]