datasciencedojo's picture
submit button hover color updated
6e700f7
from youtube_transcript_api import YouTubeTranscriptApi as yta
import gradio as gr
from deep_translator import GoogleTranslator
opts = ['afrikaans', 'albanian', 'amharic', 'arabic', 'armenian', 'azerbaijani', 'basque', 'belarusian', 'bengali', 'bosnian', 'bulgarian', 'catalan', 'cebuano', 'chichewa', 'chinese (simplified)', 'chinese (traditional)', 'corsican', 'croatian', 'czech', 'danish', 'dutch', 'english', 'esperanto', 'estonian', 'filipino', 'finnish', 'french', 'frisian', 'galician', 'georgian', 'german', 'greek', 'gujarati', 'haitian creole', 'hausa', 'hawaiian', 'hebrew', 'hebrew', 'hindi', 'hmong', 'hungarian', 'icelandic', 'igbo', 'indonesian', 'irish', 'italian', 'japanese', 'javanese', 'kannada', 'kazakh', 'khmer', 'korean', 'kurdish (kurmanji)', 'kyrgyz', 'lao', 'latin', 'latvian', 'lithuanian', 'luxembourgish', 'macedonian', 'malagasy', 'malay', 'malayalam', 'maltese', 'maori', 'marathi', 'mongolian', 'myanmar (burmese)', 'nepali', 'norwegian', 'odia', 'pashto', 'persian', 'polish', 'portuguese', 'punjabi', 'romanian', 'russian', 'samoan', 'scots gaelic', 'serbian', 'sesotho', 'shona', 'sindhi', 'sinhala', 'slovak', 'slovenian', 'somali', 'spanish', 'sundanese', 'swahili', 'swedish', 'tajik', 'tamil', 'telugu', 'thai', 'turkish', 'ukrainian', 'urdu', 'uyghur', 'uzbek', 'vietnamese', 'welsh', 'xhosa', 'yiddish', 'yoruba', 'zulu']
def transcript_generator(link,option):
yt_link = str(link)
yt_id = yt_link.partition("=")[2]
data = yta.get_transcript(yt_id)
transcript = ''
for value in data:
for key,val in value.items():
if key == 'text':
transcript += val
translation = GoogleTranslator(source='auto', target=option).translate(transcript)
return transcript,translation
css = """
footer {display:none !important}
.output-markdown{display:none !important}
footer {visibility: hidden}
#component-4 textarea[data-testid="textbox"] { height: 178px !important}
#component-7 textarea[data-testid="textbox"] { height: 178px !important}
.max-h-[30rem] {max-height: 18rem !important;}
.hover\:bg-orange-50:hover {
--tw-bg-opacity: 1 !important;
background-color: rgb(229,225,255) !important;
}
.gr-button-lg {
z-index: 14;
width: 113px;
height: 30px;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(17, 20, 45) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: none !important;
}
.gr-button-lg:hover{
z-index: 14;
width: 113px;
height: 30px;
left: 0px;
top: 0px;
padding: 0px;
cursor: pointer !important;
background: none rgb(66, 133, 244) !important;
border: none !important;
text-align: center !important;
font-size: 14px !important;
font-weight: 500 !important;
color: rgb(255, 255, 255) !important;
line-height: 1 !important;
border-radius: 6px !important;
transition: box-shadow 200ms ease 0s, background 200ms ease 0s !important;
box-shadow: rgb(0 0 0 / 23%) 0px 1px 7px 0px !important;
}
"""
with gr.Blocks(title="YouTube Dialogue Transcriber | Data Science Dojo", css = css) as demo:
input1 = gr.Textbox(label="Enter YouTube Link",value='',lines=1)
input2 = gr.Dropdown(label="Select Transcript Translation Language", choices=opts)
with gr.Tab("Transcript"):
output1 = gr.Textbox(label="Transcript",lines=10)
with gr.Tab("Translated Transcript"):
output2 = gr.Textbox(label="Translation",lines=10)
btn = gr.Button(value="Submit")
btn.click(transcript_generator, inputs=[input1,input2], outputs=[output1,output2])
gr.Examples(
[["https://www.youtube.com/watch?v=47dtFZ8CFo8",'chinese (simplified)'], ["https://www.youtube.com/watch?v=hT_nvWreIhg",'french'],['https://www.youtube.com/watch?v=PMs76lrqiA4','urdu']],
fn = transcript_generator,
inputs = [input1,input2],
outputs = [output1,output2],
cache_examples = True,
)
if __name__ == "__main__":
demo.launch()