#!/home/aaron/miniconda3/bin/python # How to: # 1. Get python running on your computer # 2. Install arxiv: $ pip install arxiv # 3. Get pandoc running! # 4. Install rmapi # 5. change the RMAPI variable to point to the rmapi executable (line 18) # 6. change line 1 to point to your python interpreter ($ which python), make the script executable, etc. # 7. change the QUERY variable to query arxiv to whatever you like (line 19) # 8. Setup a cron job! import arxiv from datetime import datetime, timedelta import pytz import os RMAPI = '/home/aaron/bin/rmapi' # CHANGE to the install directory of rmapi QUERY = 'cat:astro-ph.EP' today = datetime.now() replace_dict = {r'\[': r'$', r'\(': r'$', r'\]':r'$', r'\)':r'$', # '$ ':'$', # ' $':'$', '$\n':'$', r'\unit':'', } def get_results(): delta_yest = 1 if today.isoweekday() != 1 else 3 # account for weekends! yesterday = today - timedelta(days=delta_yest) yesterday = yesterday.replace(minute=0, hour=18, second=0, microsecond=0) delta_q = 1 if yesterday.isoweekday() != 1 else 3 # account for weekends! q_day = (yesterday - timedelta(days=delta_q)) timezone = pytz.timezone("GMT") q_day = timezone.localize(q_day) yesterday = timezone.localize(yesterday) search = arxiv.Search( query = QUERY, max_results = 100, sort_by = arxiv.SortCriterion.SubmittedDate ) filtered = [result for result in search.results() if result.published > q_day and result.published < yesterday] return filtered, yesterday, q_day def upload(filtered, yesterday, q_day, delete=True): with open('arxiv.md','w') as f: f.write(f"\n\n=================================================\n\n") f.write(f"# Submissions to: {QUERY}\n\n") f.write(f"## received from {q_day.strftime('%d.%m.%Y, %H:%M')} to {yesterday.strftime('%d.%m.%Y, %H:%M')} GMT\n") f.write(f"\n\n=================================================\n\n") for res in filtered: summary = res.summary for r_key, r_val in replace_dict.items(): summary = summary.replace(r_key, r_val) f.write("\n\n----------------------------------------------\n\n") f.write(r"### {}".format(res.title) + "\n\n") f.write(r"*{}*".format(', '.join([str(a) for a in res.authors]))+"\n\n") f.write(r"{}".format(summary)+"\n\n") f.write("#### comments:\n > "+r"{}".format(res.comment) + "\n\n\n") r = os.system('pandoc arxiv.md -o arxiv.pdf --pdf-engine=xelatex') if r != 0: print('something went wrong, when creating the pdf, using gfm instead') os.system('pandoc arxiv.md -o arxiv.pdf --pdf-engine=xelatex -f gfm') if delete: os.system('rm arxiv.md') os.system(f'{RMAPI} rm arxiv') os.system(f'{RMAPI} put arxiv.pdf') if delete: os.system(f'rm arxiv.pdf') if __name__ == "__main__": if today.isoweekday() in range(1,6): filtered, yesterday, q_day = get_results() upload(filtered, yesterday, q_day, delete=False) print(f"received from {q_day.strftime('%d.%m.%Y, %H:%M')} to {yesterday.strftime('%d.%m.%Y, %H:%M')} GMT\n") else: print('Weekend!')