panel_example7 / TLDR.py
EasySci's picture
Update TLDR.py
4c13542
import panel as pn
import pytz
from datetime import date
from datetime import datetime
from dateutil.relativedelta import relativedelta, MO
import param
import json
from functools import partial
from src.search import Search_Papers
def load_categories():
# f = open("categories_general.txt", "r")
# list_categories = f.read().splitlines()
# reading the data from the file
with open('categories_arxiv.txt') as f:
data = f.read()
# reconstructing the data as a dictionary
category_dict = json.loads(data)
return category_dict
def run_code(category, loaded_dict, event = None):
timeframe_today = (datetime.combine(date.today(), datetime.min.time())).replace(tzinfo = pytz.utc)
timeframe_week = timeframe_today + relativedelta(weekday=MO(-1))
timeframe_day = (datetime.combine(datetime(2023, 7, 16), datetime.min.time())).replace(tzinfo = pytz.utc)
search_mode = "Timeframe" #Accepted values: 'NumberResults' and 'Timeframe
sort_by = "PublishDate" #Accepted values: 'PublishDate', 'LastUpdatedDate' and 'Relevance'
sort_order = "Descending" #Accepted values: 'Ascending' and 'Descending'
query = list(loaded_dict.keys())[list(loaded_dict.values()).index(category)]
search = Search_Papers(query, search_mode, timeframe_week, sort_by, sort_order)
result_arxiv = search.search_arxiv()
return result_arxiv
def update_mainTLDR(buttons_to_add, paper_list):
main_tldr = []
if buttons_to_add:
table_of_contents = []
for i in range(len(buttons_to_add)):
category_content = []
category_title = f"{buttons_to_add[i]}"
anchor_id = category_title.lower().replace(" ", "-") # Generate anchor ID from the title
table_of_contents.append(f"- [{category_title}](#{anchor_id})")
for paper in paper_list[i]:
# Create the HTML content for both links with line breaks
html_content = (
f'<a href="{paper.entry_id}" target="_blank">{paper.entry_id}</a>'
f' - <a href="{paper.pdf_url}" target="_blank">PDF</a>'
f' - {(paper.published).strftime("%d/%m/%Y %H:%M:%S")}'
)
paper_content = pn.Column(
pn.pane.LaTeX(f"## {paper.title}", styles={'font-size': '16pt', 'font-weight':'bold'}), # Make the title a sub-heading (H2)
pn.pane.HTML(html_content, styles={'font-size': '12pt'}),
pn.pane.LaTeX(paper.summary, styles={'font-size': '14pt'}),
sizing_mode="scale_width"
)
category_content.append(paper_content)
category_column = pn.Column(
pn.pane.Markdown(f"## {category_title}"), # Add a Markdown heading (H2) for the category title
pn.pane.HTML(f'<a id="{anchor_id}"></a>'), # Create anchor without href
pn.layout.Spacer(height=20),
*category_content,
pn.layout.Spacer(height=10),
pn.layout.Divider(),
pn.layout.Spacer(height=30),
sizing_mode="scale_width"
)
main_tldr.append(category_column)
# Create the table of contents Markdown text
toc_text = "\n".join(table_of_contents)
# Insert the table of contents at the beginning of the main content
main_tldr.insert(0, pn.pane.Markdown(f"## Table of Contents\n{toc_text}\n"))
else:
main_tldr.append(pn.pane.Markdown("# Please select some tags!"))
return main_tldr