平常如果想要參考同學的作業,一直覺得步驟有點繁瑣:
點開 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 labelcurl 下載 repo 裡面的所有檔案./get.sh <id-start> <id-end>

此練習剛好運用了之前的課程所學,有
week1 的挑戰題 + 超級挑戰題跟week4 的串接 API 作業的經驗,其實並不會很難實現,超級感謝 Huli 用心的課程設計。
因為抓檔案的效率不好,也懷疑自己是不是用很愚蠢的方法在實現目的,問了 Huli 有沒有改善的方法,得到關鍵字 parallel,原本速度的問題應該是出在順序下載,所以可以改成抓完所有 url 再一次下載,真是非常感謝!日後會好好研究,等優化完程式、有實用性再來分享。
parallel 改善下載效率,參考 範例[Week_num],要如何排除與防呆( <your-token> 要改成你申請的 token )