JadwalAlmaa's picture
Create app.py
3d3d6d3 verified
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)