File size: 3,722 Bytes
63135a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8fafff8
 
 
 
 
 
63135a7
4c1af0e
 
 
80d71cb
4c1af0e
80d71cb
ee4ec2a
7f4a2af
ee4ec2a
 
4c1af0e
42fb932
 
4c1af0e
42fb932
 
80d71cb
4c1af0e
42fb932
34c16e0
 
 
1d7689e
42fb932
 
1d7689e
4c1af0e
 
 
2478fc7
 
 
 
 
 
8fafff8
 
 
 
63135a7
4c1af0e
63135a7
1d7689e
 
 
 
 
 
 
 
 
 
e426ea3
 
 
 
 
f3bd71a
e426ea3
 
 
 
f3bd71a
e426ea3
 
2478fc7
 
 
 
 
63135a7
1d7689e
697b38a
1d7689e
 
86c2bc6
 
64e01a0
 
697b38a
63135a7
8fafff8
63135a7
 
 
 
f1ded69
 
 
 
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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;
}

#ctr {
    text-align: center;
}

#htel {
    justify-content: center;
    text-align: center;
}
"""

examples = [
    [
        "https://arxiv.org/abs/2208.14178v1",
    ]
]

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:
    with gr.Column():
        gr.Markdown("# arXiv Cards Generator ⚙️", elem_id="ctr")
        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")
        with gr.Row():
            gr.Examples(
                examples=examples,
                inputs=[text],
            )

    with gr.Column():
        gr.Markdown("### Resources and inspirations", elem_id="ctr")
        gr.Markdown(
            """
            - The code for retrieving the information using arXiv API is mainly taken from [github.com/kunalghosh/Conference-Grok](https://github.com/kunalghosh/Conference-Grok).
            - The [pdf2preview](https://huggingface.co/spaces/chuanenlin/pdf2preview) space is also a great way to share academic publications on slides.
            
            **Author**: [eliolio](https://huggingface.co/eliolio)
            """)
    button.click(
        fn=create_html_card,
        inputs=[text],
        outputs=[card]
    )



if __name__ == "__main__":
    demo.launch()