arxiv-cards / app.py
EliottZemour
update demo
8fafff8
raw
history blame
1.82 kB
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()