File size: 1,658 Bytes
08080f2
 
 
9f6546e
4a02364
08080f2
 
b4eb3ca
9fb4b90
08080f2
5884212
 
08080f2
5884212
2716ba4
9f6546e
 
 
 
 
9fb4b90
2716ba4
4a02364
 
 
 
57102fb
9f6546e
 
9fb4b90
 
 
 
 
2176657
 
c9a6eb5
 
9fb4b90
5884212
3ace5d1
4a02364
5972bae
57102fb
 
4a02364
 
9f6546e
 
 
 
 
 
4a02364
 
3ace5d1
57102fb
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
#!/usr/bin/env python

import gradio as gr
import pandas as pd
from gradio_calendar import Calendar

from papers import PaperList, get_df

DESCRIPTION = "# [Daily Papers](https://huggingface.co/papers)"

with open("last_updated.txt") as f:
    last_updated = f.read()

paper_list = PaperList(get_df())


def update_num_papers(df: pd.DataFrame) -> str:
    return f"{len(df)} / {len(paper_list.df_raw)}"


with gr.Blocks(css="style.css") as demo:
    gr.Markdown(DESCRIPTION)
    with gr.Group():
        with gr.Row():
            start_date = Calendar(label="Start date", type="datetime", value="2023-05-05")
            end_date = Calendar(label="End date", type="datetime")
        search_title = gr.Textbox(label="Search by title")

    num_papers = gr.Textbox(label="Number of papers", value=update_num_papers(paper_list.df_raw), interactive=False)
    df = gr.Dataframe(
        value=paper_list.df_prettified,
        datatype=paper_list.column_datatype,
        type="pandas",
        interactive=False,
        height=1000,
        elem_id="table",
        column_widths=["10%", "10%", "60%", "10%", "10%"],
        wrap=True,
    )
    gr.Markdown(value=f"Last updated: {last_updated}", elem_id="last-updated")

    gr.on(
        triggers=[start_date.change, end_date.change, search_title.submit],
        fn=paper_list.search,
        inputs=[start_date, end_date, search_title],
        outputs=df,
        api_name=False,
    ).then(
        fn=update_num_papers,
        inputs=df,
        outputs=num_papers,
        queue=False,
        api_name=False,
    )

if __name__ == "__main__":
    demo.queue(api_open=False).launch(show_api=False)