Spaces:
Running
Running
| import gradio as gr | |
| import os | |
| import utils | |
| example_video_id = "ErnWZxJovaM" | |
| example_output_transcript = utils.load_transcript(example_video_id) | |
| example_chapters = utils.load_json_chapters(example_video_id) | |
| example_output_html = utils.get_result_as_html(example_chapters, example_video_id) | |
| example_video_id_dict = {"MIT Introduction to Deep Learning | 6.S191 - Alexander Amini - 2024": "ErnWZxJovaM", | |
| "How to speak - Patrick Winston - 2018": "Unzc731iCUY", | |
| "Let's build the GPT Tokenizer - Andrej Karpathy - 2024": "zduSFxRajkE"} | |
| example_video_names = list(example_video_id_dict.keys()) | |
| def gradio_load_example(example_video): | |
| print(f"Loading example: {example_video}") | |
| video_id = example_video_id_dict[example_video] | |
| transcript_as_text = utils.load_transcript(video_id) | |
| chapters = utils.load_json_chapters(video_id) | |
| output_html = utils.get_result_as_html(chapters, video_id) | |
| return {output_processing: output_html, | |
| output_transcript: transcript_as_text} | |
| # %% | |
| css = """ | |
| .content { | |
| padding: 20px; | |
| max-width: 800px; | |
| margin: 0 auto; | |
| background-color: #ffffff; | |
| box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); | |
| border-radius: 8px; | |
| } | |
| """ | |
| with (gr.Blocks(css=css) as app): | |
| gr.HTML("<div align='center'><h1>Demo: Automatic video chaptering with LLMs and TF-IDF</h1></div>") | |
| gr.HTML("<div align='center'><h2>From raw transcript to structured document</h2></div>") | |
| gr.HTML("<div align='center'><h3>See the companion <a href='https://ya-lb.medium.com/automate-video-chaptering-with-llms-and-tf-idf-f6569fd4d32b'>Medium article</a> and <a href='https://github.com/Yannael/automatic-video-chaptering'>Github repository</a> for more details</h3>") | |
| gr.HTML("<hr>") | |
| video_id_input = gr.Dropdown(choices=example_video_names, | |
| label="Choose a video to see the structured transcript", | |
| value=example_video_names[0]) | |
| gr.HTML("<hr>") | |
| with gr.Accordion("See raw transcript", open=False): | |
| output_transcript = gr.Textbox(value=example_output_transcript, max_lines=10, lines=10, label="Raw transcript") | |
| output_processing = gr.HTML(label="Output processing", value=example_output_html) | |
| video_id_input.change(gradio_load_example, | |
| inputs=[video_id_input], | |
| outputs=[output_processing, output_transcript]) | |
| app.launch(debug=True, width="100%") |