File size: 2,012 Bytes
f319a7d
d6a85e3
f319a7d
 
 
16e7c81
 
 
 
 
 
 
 
f319a7d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16e7c81
 
f319a7d
16e7c81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12c5b62
 
e2a07a7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from util import *
import gradio as gr
from deepmultilingualpunctuation import PunctuationModel

cp_aug = 'minnehwg/finetune-newwiki-summarization-ver-augmented'


def get_model(cp):
    checkpoint = cp
    tokenizer, model = load_model(checkpoint)
    return tokenizer, model

tokenizer, model = get_model(cp_aug)
restore_model = PunctuationModel()

def execute_func(url, model, tokenizer, punc_model):
    trans, sub = get_subtitles(url)
    sub = restore_punctuation(sub, punc_model)
    vie_sub = translate_long(sub)
    vie_sub = processed(vie_sub)
    chunks = split_into_chunks(vie_sub, 700, 2)
    sum_para = []
    for i in chunks:
        tmp = summarize(i, model, tokenizer, num_beams=3)
        sum_para.append(tmp)
    suma = ''.join(sum_para)
    del sub, vie_sub, sum_para, chunks
    suma = post_processing(suma)
    re = display(suma)
    return re

def generate_summary(url):
    results = execute_func(url, model, tokenizer, restore_model)
    summary = "\n".join(results)
    return summary

def generate_summary_and_video(url):
    summary = generate_summary(url)
    summary_html = summary.replace("\n", "<br>")
    try:
        video_id = url.split("v=")[1].split("&")[0]
        iframe = f'<iframe width="300" height="200" src="https://www.youtube.com/embed/{video_id}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
        return f"{iframe}<br><br>Những ý chính trong video:<br><br>{summary_html}"
    except IndexError:
        return f"**Summary:**\n{summary}\n\nInvalid YouTube URL for video display."

css = """
.output-html {
    font-size: 40px;
}
"""

demo = gr.Interface(
    fn=generate_summary_and_video,
    inputs=gr.Textbox(lines=2, placeholder="Enter URL..."),
    outputs=gr.HTML(label="Results"),
    title="Summarizer",
    description="Enter the URL to display the YouTube video and summarize the content.",
    css=css
)


demo.launch(server_name="0.0.0.0", server_port=7860, share=True)