讓我們 用Python監(jiān)控Github項目是否有更新,如果有的話自動下載該更新 !
1.統(tǒng)一文件名格式
為了能夠獲取github上的項目的更新時間,我們需要調(diào)用github的一個API:
https://api.github.com/repos/用戶名/庫名
可以看到,這個API由 用戶名/庫名 組成,因此我們的文件名應(yīng)該以它為標準才能方便API的調(diào)用,由于文件名不可以帶有 '/' 這樣的特殊符號,因此我們改為下劃線分割,如FastText項目調(diào)用API的時候為:
https://api.github.com/repos/facebookresearch/fastText
我們保存的文件名則為** facebookresearch_fastText.zip**
這樣,在調(diào)用API、下載文件的時候?qū)奖阍S多
2.獲得文件夾里所有文件名及最后修改時間
為了判斷github上的項目是否相對于本地有更新,我們需要獲得每一個本地的文件的最后修改時間,因此這是一個字典關(guān)系。代碼如下:
3.與Github線上項目對比更新時間
首先我們要通過調(diào)用我們前面說提到的API 獲取github線上項目的時間。其次,一定要將其格式化為10位時間戳,因為我們第二步獲得的時間也是10位時間戳,這樣對比起來非常方便。最后返回的時候只需要返回是否需要更新即可。如圖所示。
代碼如下:
4.如果有需要更新的項目,讓其自動下載
由于許多github項目文件壓縮包都挺大的,我們這里采用了流式下載。如果你的項目特別多,你需要更快地進行下載,請采用批量異步下載。在我們之前的那篇文章里都有,點擊即可閱讀。
5. 整套流程
我們把已經(jīng)下載好的項目文件放在libs文件夾里,自動下載得到的文件放置在new文件夾中。文件結(jié)構(gòu)如下:
F:pythondictpythondict-downloads
│ superviser.py
│
├─libs
│ facebookresearch_fastText.zip
│ facebookresearch_MUSE.zip
│
└─new
整套代碼如下,為了防范盜取文章的家伙,原諒我這里是圖片的格式,如果需要請復(fù)制以下鏈接或點擊閱讀原文查看本部分:
https://pythondict.com/download/python-watch-github-update-download/
-
監(jiān)控
+關(guān)注
關(guān)注
6文章
2234瀏覽量
55364 -
API
+關(guān)注
關(guān)注
2文章
1510瀏覽量
62395 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85037 -
GitHub
+關(guān)注
關(guān)注
3文章
473瀏覽量
16564
發(fā)布評論請先 登錄
相關(guān)推薦
評論