arxiv_alerts

利用Github实现自动化筛选日更Arixv文章

配置日更arxiv文章的自动化流程

需求分析

1、及时获取最新的感兴趣的arxiv论文,可以通过预设关键字,并匹配文章摘要,抓取感兴趣文章;

2、自动化流程,通过github的action方法自动实现,定时操作(比如,每日更新一次),我们仅需查看特定仓库issue即可。

总体方案

1、python抓取特定arxiv文章并推送到github某仓库中,推送信息以issue的形式呈现,方便删除与关闭操作;

2、利用Github的Action功能实现定时抓取流程;

1、抓取文章并推送

这里使用 https://github.com/kobiso/get-daily-arxiv-noti 中的方法。

将该仓库克隆到本地后,需要配置config.py的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Authentication for user filing issue (must have read/write access to repository to add issue to)
USERNAME = 'changeme' #你的github账户名
TOKEN = 'changeme' #你的个人访问令牌

# The repository to add this issue to
REPO_OWNER = 'changeme' #推送到的仓库拥有者账户名
REPO_NAME = 'changeme' #推送到的仓库名

# Set new submission url of subject
NEW_SUB_URL = 'https://arxiv.org/list/cs/new'

# Keywords to search
KEYWORD_LIST = ["changeme"]

本地运行方法:

1
python PATH-TO-CODE/main.py

这时,我们已经可以实现手动推送功能了,但是如果要自动化该流程,我们需要把本地代码上传到github某仓库中,并借助Action功能实现自动化流程。

2、在github上配置Action实现自动化

在仓库中新建文件夹.github/workflows/,新建main.yml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
name: "daily alerts"

on:
push:
branches:
- master
schedule:
- cron: "0 0 * * *"

jobs:
backup:
runs-on: ubuntu-latest
name: Backup
timeout-minutes: 15
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8

- name: Setup dependencies
run: |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Run backup
run: python main.py

- name: Commit changes
uses: elstudio/actions-js-build/commit@v3
with:
commitMessage: Automated snapshot

根据以上yml文件,github会定时触发预定流程(这里是每天0点更新,或者是在更新仓库后也会触发动作);
具体触发过程:在指定系统下,安装依赖指定文件(可以由requirements.txt指定),然后执行main.py文件,最后,提交变化更新本仓库;

推送效果样例

这里展示一个样例,https://github.com/kobiso/daily-arxiv-noti/issues

参考

arxiv文章自动issue:https://github.com/kobiso/get-daily-arxiv-noti

配置github个人访问令牌:https://docs.github.com/cn/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token