平常如果想要參考同學的作業,一直覺得步驟有點繁瑣:
點開 Issue
> 點進留言附的 pr 連結
> 進去 Code 標籤
(註1) > homeworks/
> 當週資料夾/
[ 註 1 ] 其實點進 File-Change 也可以,但紅紅綠綠的我看了很痛苦。
洗澡時點子找上門,決定實驗有沒有辦法把同學在 GitHub 的作業、以當週為分類下載。
60
個 request像個無知的愚婦,一開始串得很開心、用第一個迴圈跑的時候,出現了以下訊息。還好錯誤訊息非常簡單好懂,也附上了文件連結。但 token 分很多種,說實在有點搞不懂之間的差異。
HTTP/1.1 403 Forbidden
{
"message": "Maximum number of login attempts exceeded. Please try again later.",
"documentation_url": "https://developer.github.com/v3"
}
最後是使用了 personal API tokens
,加上去一小時可以發 5000
個 request,送到突破天際也不怕。
一開始用 require 抓,但要發太多 request,處理資料完全超出能力所及。 雖然很掙扎,因為前前後後 5 個小時的沈沒成本… 但就算都知道怎麼拿資料,敗在 callback 太多、我完全束手無策,還是決定整個砍掉重練。
換下 curl 指令用腳本寫,邏輯變得超級簡單啊,雖然字串的篩選寫的很爛,但有了前面的經驗後,沒有碰到太多問題。最後終於有點小成果,有點感動啊!
curl
用 Issue ID 取得 title & user-name & labelcurl
取得該 ueser 的當週 repo 裡面的所有檔案的 file-name[week-number]
user-name
label
curl
下載 repo 裡面的所有檔案./get.sh <id-start> <id-end>
此練習剛好運用了之前的課程所學,有
week1 的挑戰題 + 超級挑戰題
跟week4 的串接 API 作業
的經驗,其實並不會很難實現,超級感謝 Huli 用心的課程設計。
因為抓檔案的效率不好,也懷疑自己是不是用很愚蠢的方法在實現目的,問了 Huli 有沒有改善的方法,得到關鍵字 parallel
,原本速度的問題應該是出在順序下載,所以可以改成抓完所有 url 再一次下載,真是非常感謝!日後會好好研究,等優化完程式、有實用性再來分享。
parallel
改善下載效率,參考 範例[Week_num]
,要如何排除與防呆( <your-token>
要改成你申請的 token )