如果你有自己在本地维护一个开源代码库,你就会知道检测这些库是否更新了是多麻烦的一件事情。随着库的增大,人工维护成本也就越来越大。因此便有了这个项目的想法:让我们用Python监控Github项目是否有更新,如果有的话自动下载该更新!
1.统一文件名格式
为了能够获取github上的项目的更新时间,我们需要调用github的一个API:
https://api.github.com/repos/用户名/库名
可以看到,这个API由 用户名/库名 组成,因此我们的文件名应该以它为标准才能方便API的调用,由于文件名不可以带有 ‘/’ 这样的特殊符号,因此我们改为下划线分割,如FastText项目调用API的时候为:
https://api.github.com/repos/facebookresearch/fastText
我们保存的文件名则为 facebookresearch_fastText.zip 这样,在调用API、下载文件的时候将会方便许多。
2.获得文件夹里的所有文件名及其最后修改时间
为了判断github上的项目是否相对于本地有更新,我们需要获得每一个本地的文件的最后修改时间,因此这是一个字典关系。代码如下:
3.与Github线上项目对比更新时间
首先我们要通过调用我们前面说提到的API 获取github线上项目的时间。其次,一定要将其格式化为10位时间戳,因为我们第二步获得的时间也是10位时间戳,这样对比起来非常方便。最后返回的时候只需要返回是否需要更新即可。如图所示。
代码如下:
4.如果有需要更新的项目,让其自动下载
由于许多github项目文件压缩包都挺大的,我们这里采用了流式下载。如果你的项目特别多,你需要更快地进行下载,请采用批量异步下载。在我们之前的那篇文章里都有,点击即可阅读。
5. 整套流程
我们把已经下载好的项目文件放在libs文件夹里,自动下载得到的文件放置在new文件夹中。文件结构如下:
F:\pythondict\pythondict-downloads\
│ superviser.py
│
├─libs
│ facebookresearch_fastText.zip
│ facebookresearch_MUSE.zip
│
└─new
整套代码如下,为了防范盗取文章的家伙,原谅我这里是图片的格式,如果需要下载请点击这里: