import os from jinja2 import Environment, FileSystemLoader, select_autoescape from get_paperinfo_fromurls import get_paperinfo_fromurls import gradio as gr class CARDS_TEMPLATE(object): def __init__(self, path_to_template, template_filename): self.path_to_template = path_to_template self.template_filename = template_filename self.template = self._get_template() self.rendered_html = None def _get_template(self): env = Environment( autoescape=select_autoescape( enabled_extensions=('html'), default_for_string=True, ), loader=FileSystemLoader(self.path_to_template) ) return env.get_template(self.template_filename) def render(self, paper_details_iterator): self.rendered_html = self.template.render(paper_details=paper_details_iterator) def save_html(self, output_dir=None, output_htmlfile=None): with open(os.path.join(output_dir, output_htmlfile), "w") as f: f.write(self.rendered_html) template_file = "htmlcard.html" template_path = "" card_template = CARDS_TEMPLATE( path_to_template = template_path, template_filename = template_file, ) def create_html_card(arxiv_link): paper_details = get_paperinfo_fromurls(arxiv_link) card_template.render(paper_details_iterator=paper_details) return card_template.rendered_html demo = gr.Blocks() with demo: with gr.Row(): text = gr.inputs.Textbox() with gr.Row(): button = gr.Button("Generate card !") with gr.Row(): card = gr.HTML() button.click( fn=create_html_card, inputs=[text], outputs=[card] ) demo.launch()