Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import arxiv | |
| import csv | |
| from datetime import datetime, timedelta | |
| from deep_translator import GoogleTranslator | |
| import pandas as pd | |
| import os | |
| def fetch_and_translate(): | |
| translator = GoogleTranslator(source="en", target="ar") | |
| # Date filter for last 7 days | |
| today = datetime.now() | |
| last_week = today - timedelta(days=7) | |
| search = arxiv.Search( | |
| query="arabic", | |
| max_results=100, | |
| sort_by=arxiv.SortCriterion.SubmittedDate, | |
| sort_order=arxiv.SortOrder.Descending, | |
| ) | |
| results = [] | |
| for result in search.results(): | |
| if result.updated.date() >= last_week.date(): | |
| title_ar = translator.translate(result.title.strip()) | |
| abstract_ar = translator.translate(result.summary.strip()) | |
| results.append({ | |
| "Title (EN)": result.title.strip(), | |
| "Abstract (EN)": result.summary.strip(), | |
| "Title (AR)": title_ar, | |
| "Abstract (AR)": abstract_ar, | |
| "Link": result.entry_id | |
| }) | |
| # Save to CSV | |
| filename = "arabic_papers_this_week.csv" | |
| pd.DataFrame(results).to_csv(filename, index=False, encoding="utf-8-sig") | |
| if results: | |
| return pd.DataFrame(results), filename | |
| else: | |
| return pd.DataFrame([{"Message": "β No results found this week"}]), None | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## π Arabic Papers (This Week) with Translations") | |
| btn = gr.Button("Fetch Latest Papers") | |
| output_table = gr.DataFrame(label="Results", wrap=True) | |
| download = gr.File(label="Download CSV") | |
| btn.click(fn=fetch_and_translate, inputs=None, outputs=[output_table, download]) | |
| if __name__ == "__main__": | |
| demo.launch(server_name="0.0.0.0", server_port=7860) | |