Spaces:
Runtime error
Runtime error
| 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, | |
| ) | |
| CSS = """ | |
| #url-textbox { | |
| padding: 0 !important; | |
| font-size: 16px; | |
| } | |
| .gradio-container { | |
| background-color: transparent; | |
| } | |
| .gradio-container .gr-button-primary { | |
| background: #b31b1b; | |
| border: 1px solid #b31b1b; | |
| border-radius: 8px; | |
| color: white; | |
| font-weight: bold; | |
| font-size: 16px; | |
| } | |
| #htel { | |
| justify-content: center; | |
| } | |
| """ | |
| 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(css=CSS) | |
| with demo: | |
| gr.Markdown("# arXiv Cards Generator ⚙️") | |
| gr.HTML(""" | |
| <p align="center"> | |
| <img src="https://upload.wikimedia.org/wikipedia/commons/7/7a/ArXiv_logo_2022.png" alt="report" width="200"> | |
| </p> | |
| """) | |
| gr.Markdown( | |
| """ | |
| Need a simple and visual way to share arXiv papers on presentations, blogposts, messages? | |
| This gradio demo allows for creating arXiv cards including: | |
| - arXiv Identifier | |
| - Title | |
| - Authors | |
| - Abstract | |
| Simply paste the url link of the arXiv paper and generate! | |
| """ | |
| ) | |
| with gr.Column(): | |
| with gr.Row(): | |
| text = gr.Textbox( | |
| show_label=False, | |
| placeholder="Paste arXiv link (abs of pdf)", | |
| lines=1, | |
| max_lines=1, | |
| elem_id="url-textbox", | |
| ) | |
| button = gr.Button("Generate", variant="primary") | |
| with gr.Row(): | |
| card = gr.HTML(elem_id="htel") | |
| button.click( | |
| fn=create_html_card, | |
| inputs=[text], | |
| outputs=[card] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |