Spaces:
Running
Running
add title search
Browse files- app.py +56 -5
- constants.py +1 -1
- df/PaperCentral.py +17 -0
app.py
CHANGED
|
@@ -11,6 +11,11 @@ paper_central_df = PaperCentral()
|
|
| 11 |
with gr.Blocks(css="style.css") as demo:
|
| 12 |
gr.Markdown("# Paper Central")
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
# Create a row for navigation buttons and calendar
|
| 15 |
with gr.Row():
|
| 16 |
with gr.Column(scale=1):
|
|
@@ -69,12 +74,17 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 69 |
label="Conference options",
|
| 70 |
choices=["In proceedings"] + PaperCentral.CONFERENCES
|
| 71 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
# Define a Textbox for author search
|
| 74 |
-
author_search = gr.Textbox(
|
| 75 |
-
label="Search Authors",
|
| 76 |
-
placeholder="Enter author name",
|
| 77 |
-
)
|
| 78 |
# Define the Dataframe component to display paper data
|
| 79 |
# List of columns in your DataFrame
|
| 80 |
columns = paper_central_df.COLUMNS_START_PAPER_PAGE
|
|
@@ -90,6 +100,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 90 |
interactive=False,
|
| 91 |
height=1000,
|
| 92 |
elem_id="table",
|
|
|
|
| 93 |
)
|
| 94 |
|
| 95 |
|
|
@@ -100,6 +111,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 100 |
hf_options_list: List[str],
|
| 101 |
conference_options_list: List[str],
|
| 102 |
author_search_input: str,
|
|
|
|
| 103 |
) -> tuple:
|
| 104 |
"""
|
| 105 |
Moves the selected date to the next day and updates the data.
|
|
@@ -130,6 +142,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 130 |
hf_options=hf_options_list,
|
| 131 |
conference_options=conference_options_list,
|
| 132 |
author_search_input=author_search_input,
|
|
|
|
| 133 |
)
|
| 134 |
|
| 135 |
# Return the new date and updated Dataframe
|
|
@@ -143,6 +156,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 143 |
hf_options_list: List[str],
|
| 144 |
conference_options_list: List[str],
|
| 145 |
author_search_input: str,
|
|
|
|
| 146 |
) -> tuple:
|
| 147 |
"""
|
| 148 |
Moves the selected date to the previous day and updates the data.
|
|
@@ -173,6 +187,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 173 |
hf_options=hf_options_list,
|
| 174 |
conference_options=conference_options_list,
|
| 175 |
author_search_input=author_search_input,
|
|
|
|
| 176 |
)
|
| 177 |
|
| 178 |
# Return the new date and updated Dataframe
|
|
@@ -186,6 +201,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 186 |
hf_options_list: List[str],
|
| 187 |
conference_options_list: List[str],
|
| 188 |
author_search_input: str,
|
|
|
|
| 189 |
):
|
| 190 |
"""
|
| 191 |
Updates the data displayed in the Dataframe based on the selected date and options.
|
|
@@ -205,6 +221,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 205 |
hf_options=hf_options_list,
|
| 206 |
conference_options=conference_options_list,
|
| 207 |
author_search_input=author_search_input,
|
|
|
|
| 208 |
)
|
| 209 |
|
| 210 |
|
|
@@ -215,6 +232,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 215 |
hf_options_list: List[str],
|
| 216 |
conference_options_list: List[str],
|
| 217 |
author_search_input: str,
|
|
|
|
| 218 |
):
|
| 219 |
|
| 220 |
cat_options_update = gr.update()
|
|
@@ -231,6 +249,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 231 |
hf_options_list,
|
| 232 |
conference_options_list,
|
| 233 |
author_search_input,
|
|
|
|
| 234 |
)
|
| 235 |
visible = False
|
| 236 |
|
|
@@ -248,6 +267,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 248 |
hf_options_list: List[str],
|
| 249 |
conference_options_list: List[str],
|
| 250 |
author_search_input: str,
|
|
|
|
| 251 |
):
|
| 252 |
conference_options_update = gr.update()
|
| 253 |
paper_central_component_update = gr.update()
|
|
@@ -263,6 +283,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 263 |
hf_options_list,
|
| 264 |
[],
|
| 265 |
author_search_input,
|
|
|
|
| 266 |
)
|
| 267 |
visible = True
|
| 268 |
|
|
@@ -279,6 +300,7 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 279 |
hf_options,
|
| 280 |
conference_options,
|
| 281 |
author_search,
|
|
|
|
| 282 |
]
|
| 283 |
|
| 284 |
# Set up the event listener for the author search
|
|
@@ -288,6 +310,12 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 288 |
outputs=paper_central_component,
|
| 289 |
)
|
| 290 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 291 |
# Set up the event listener for the 'Next Day' button
|
| 292 |
next_day_btn.click(
|
| 293 |
fn=go_to_next_day,
|
|
@@ -331,11 +359,34 @@ with gr.Blocks(css="style.css") as demo:
|
|
| 331 |
)
|
| 332 |
|
| 333 |
# Load the initial data when the app starts
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 334 |
demo.load(
|
| 335 |
fn=update_data,
|
| 336 |
inputs=inputs,
|
| 337 |
outputs=paper_central_component,
|
| 338 |
api_name=False,
|
|
|
|
|
|
|
| 339 |
)
|
| 340 |
|
| 341 |
|
|
|
|
| 11 |
with gr.Blocks(css="style.css") as demo:
|
| 12 |
gr.Markdown("# Paper Central")
|
| 13 |
|
| 14 |
+
with gr.Accordion(label="⭐Release notes", open=False):
|
| 15 |
+
gr.Markdown("""
|
| 16 |
+
4/10/2024 - You can now filter by Title
|
| 17 |
+
""")
|
| 18 |
+
|
| 19 |
# Create a row for navigation buttons and calendar
|
| 20 |
with gr.Row():
|
| 21 |
with gr.Column(scale=1):
|
|
|
|
| 74 |
label="Conference options",
|
| 75 |
choices=["In proceedings"] + PaperCentral.CONFERENCES
|
| 76 |
)
|
| 77 |
+
with gr.Row():
|
| 78 |
+
# Define a Textbox for author search
|
| 79 |
+
author_search = gr.Textbox(
|
| 80 |
+
label="Search Authors",
|
| 81 |
+
placeholder="Enter author name",
|
| 82 |
+
)
|
| 83 |
+
title_search = gr.Textbox(
|
| 84 |
+
label="Search Title",
|
| 85 |
+
placeholder="Enter keywords",
|
| 86 |
+
)
|
| 87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
# Define the Dataframe component to display paper data
|
| 89 |
# List of columns in your DataFrame
|
| 90 |
columns = paper_central_df.COLUMNS_START_PAPER_PAGE
|
|
|
|
| 100 |
interactive=False,
|
| 101 |
height=1000,
|
| 102 |
elem_id="table",
|
| 103 |
+
wrap=True,
|
| 104 |
)
|
| 105 |
|
| 106 |
|
|
|
|
| 111 |
hf_options_list: List[str],
|
| 112 |
conference_options_list: List[str],
|
| 113 |
author_search_input: str,
|
| 114 |
+
title_search_input: str,
|
| 115 |
) -> tuple:
|
| 116 |
"""
|
| 117 |
Moves the selected date to the next day and updates the data.
|
|
|
|
| 142 |
hf_options=hf_options_list,
|
| 143 |
conference_options=conference_options_list,
|
| 144 |
author_search_input=author_search_input,
|
| 145 |
+
title_search_input=title_search_input,
|
| 146 |
)
|
| 147 |
|
| 148 |
# Return the new date and updated Dataframe
|
|
|
|
| 156 |
hf_options_list: List[str],
|
| 157 |
conference_options_list: List[str],
|
| 158 |
author_search_input: str,
|
| 159 |
+
title_search_input: str,
|
| 160 |
) -> tuple:
|
| 161 |
"""
|
| 162 |
Moves the selected date to the previous day and updates the data.
|
|
|
|
| 187 |
hf_options=hf_options_list,
|
| 188 |
conference_options=conference_options_list,
|
| 189 |
author_search_input=author_search_input,
|
| 190 |
+
title_search_input=title_search_input,
|
| 191 |
)
|
| 192 |
|
| 193 |
# Return the new date and updated Dataframe
|
|
|
|
| 201 |
hf_options_list: List[str],
|
| 202 |
conference_options_list: List[str],
|
| 203 |
author_search_input: str,
|
| 204 |
+
title_search_input: str,
|
| 205 |
):
|
| 206 |
"""
|
| 207 |
Updates the data displayed in the Dataframe based on the selected date and options.
|
|
|
|
| 221 |
hf_options=hf_options_list,
|
| 222 |
conference_options=conference_options_list,
|
| 223 |
author_search_input=author_search_input,
|
| 224 |
+
title_search_input=title_search_input,
|
| 225 |
)
|
| 226 |
|
| 227 |
|
|
|
|
| 232 |
hf_options_list: List[str],
|
| 233 |
conference_options_list: List[str],
|
| 234 |
author_search_input: str,
|
| 235 |
+
title_search_input: str,
|
| 236 |
):
|
| 237 |
|
| 238 |
cat_options_update = gr.update()
|
|
|
|
| 249 |
hf_options_list,
|
| 250 |
conference_options_list,
|
| 251 |
author_search_input,
|
| 252 |
+
title_search_input,
|
| 253 |
)
|
| 254 |
visible = False
|
| 255 |
|
|
|
|
| 267 |
hf_options_list: List[str],
|
| 268 |
conference_options_list: List[str],
|
| 269 |
author_search_input: str,
|
| 270 |
+
title_search_input: str,
|
| 271 |
):
|
| 272 |
conference_options_update = gr.update()
|
| 273 |
paper_central_component_update = gr.update()
|
|
|
|
| 283 |
hf_options_list,
|
| 284 |
[],
|
| 285 |
author_search_input,
|
| 286 |
+
title_search_input,
|
| 287 |
)
|
| 288 |
visible = True
|
| 289 |
|
|
|
|
| 300 |
hf_options,
|
| 301 |
conference_options,
|
| 302 |
author_search,
|
| 303 |
+
title_search,
|
| 304 |
]
|
| 305 |
|
| 306 |
# Set up the event listener for the author search
|
|
|
|
| 310 |
outputs=paper_central_component,
|
| 311 |
)
|
| 312 |
|
| 313 |
+
title_search.submit(
|
| 314 |
+
fn=update_data,
|
| 315 |
+
inputs=inputs,
|
| 316 |
+
outputs=paper_central_component,
|
| 317 |
+
)
|
| 318 |
+
|
| 319 |
# Set up the event listener for the 'Next Day' button
|
| 320 |
next_day_btn.click(
|
| 321 |
fn=go_to_next_day,
|
|
|
|
| 359 |
)
|
| 360 |
|
| 361 |
# Load the initial data when the app starts
|
| 362 |
+
request = gr.Request()
|
| 363 |
+
|
| 364 |
+
|
| 365 |
+
def echo(request: gr.Request):
|
| 366 |
+
"""
|
| 367 |
+
Echoes the input text and prints request details.
|
| 368 |
+
|
| 369 |
+
Args:
|
| 370 |
+
text (str): The input text from the user.
|
| 371 |
+
request (gr.Request): The HTTP request object.
|
| 372 |
+
|
| 373 |
+
Returns:
|
| 374 |
+
str: The echoed text.
|
| 375 |
+
"""
|
| 376 |
+
if request:
|
| 377 |
+
print("Request headers dictionary:", dict(request.headers))
|
| 378 |
+
print("IP address:", request.client.host)
|
| 379 |
+
print("Query parameters:", dict(request.query_params))
|
| 380 |
+
print("Session hash:", request.session_hash)
|
| 381 |
+
|
| 382 |
+
|
| 383 |
demo.load(
|
| 384 |
fn=update_data,
|
| 385 |
inputs=inputs,
|
| 386 |
outputs=paper_central_component,
|
| 387 |
api_name=False,
|
| 388 |
+
).then(
|
| 389 |
+
fn=echo,
|
| 390 |
)
|
| 391 |
|
| 392 |
|
constants.py
CHANGED
|
@@ -5,4 +5,4 @@ DATASET_DAILY_PAPERS = "hysts-bot-data/daily-papers"
|
|
| 5 |
DATASET_DAILY_PAPERS_STATS = "hysts-bot-data/daily-papers-stats"
|
| 6 |
DATASET_COMMUNITY_SCIENCE = "huggingface/community-science-paper-v2"
|
| 7 |
# DATASET_PAPER_CENTRAL = "huggingface/paper-central-data"
|
| 8 |
-
DATASET_PAPER_CENTRAL = "huggingface/paper-central-data
|
|
|
|
| 5 |
DATASET_DAILY_PAPERS_STATS = "hysts-bot-data/daily-papers-stats"
|
| 6 |
DATASET_COMMUNITY_SCIENCE = "huggingface/community-science-paper-v2"
|
| 7 |
# DATASET_PAPER_CENTRAL = "huggingface/paper-central-data"
|
| 8 |
+
DATASET_PAPER_CENTRAL = "huggingface/paper-central-data"
|
df/PaperCentral.py
CHANGED
|
@@ -276,6 +276,7 @@ class PaperCentral:
|
|
| 276 |
hf_options: Optional[List[str]] = None,
|
| 277 |
conference_options: Optional[List[str]] = None,
|
| 278 |
author_search_input: Optional[str] = None,
|
|
|
|
| 279 |
) -> gr.update:
|
| 280 |
"""
|
| 281 |
Filter the DataFrame based on selected date and options, and prepare it for display.
|
|
@@ -293,6 +294,22 @@ class PaperCentral:
|
|
| 293 |
# Start with the initial columns to display
|
| 294 |
columns_to_show: List[str] = PaperCentral.COLUMNS_START_PAPER_PAGE.copy()
|
| 295 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 296 |
if author_search_input:
|
| 297 |
if 'authors' not in columns_to_show:
|
| 298 |
columns_to_show.append('authors')
|
|
|
|
| 276 |
hf_options: Optional[List[str]] = None,
|
| 277 |
conference_options: Optional[List[str]] = None,
|
| 278 |
author_search_input: Optional[str] = None,
|
| 279 |
+
title_search_input: Optional[str] = None,
|
| 280 |
) -> gr.update:
|
| 281 |
"""
|
| 282 |
Filter the DataFrame based on selected date and options, and prepare it for display.
|
|
|
|
| 294 |
# Start with the initial columns to display
|
| 295 |
columns_to_show: List[str] = PaperCentral.COLUMNS_START_PAPER_PAGE.copy()
|
| 296 |
|
| 297 |
+
if title_search_input:
|
| 298 |
+
if 'title' not in columns_to_show:
|
| 299 |
+
columns_to_show.append('authors')
|
| 300 |
+
|
| 301 |
+
search_string = title_search_input.lower()
|
| 302 |
+
|
| 303 |
+
def title_match(title):
|
| 304 |
+
if isinstance(title, str):
|
| 305 |
+
# If authors_list is a single string
|
| 306 |
+
return search_string in title.lower()
|
| 307 |
+
else:
|
| 308 |
+
# Handle unexpected data types
|
| 309 |
+
return False
|
| 310 |
+
|
| 311 |
+
filtered_df = filtered_df[filtered_df['title'].apply(title_match)]
|
| 312 |
+
|
| 313 |
if author_search_input:
|
| 314 |
if 'authors' not in columns_to_show:
|
| 315 |
columns_to_show.append('authors')
|