用 Line notify 傳遞 ptt 爬蟲資料
原定流程
github action 執行爬蟲程式 => github action 觸發 Line notify
- 爬蟲程式
- github action
- 在github action 時, 載入data.js 檔案(設定成secrets)
- line notify 顯示問題 \n換行
- Environment variables 在這邊設定要爬的內容&回傳訊息
- line notify 通知
遇到的問題
- github action 如果使用 schedule: 無法設定觸發的 branch
- 只能直接綁定執行的branch
- 但會導致 workflow_dispatch: 選擇branch觸發無效
- 只能直接綁定執行的branch
:::warning
沒有解決
schedule: 使用 default branch 觸發, 就改用 default branch 版本控制
:::
2. 無法將 node index.js 回傳的資料, 直接透過 github action 傳遞參數給 line notify
:::success
解決
改用 writeFileSync 輸出 .txt, github action 透過讀檔傳遞資料
:::
3. Line notify 每次傳訊息字數上限為1000
- 因為 github action forloop 執行 step 有障礙, 大改版
:::success
解決
將 github action 精簡, 不使用 writeFileSync 輸出檔案, 改為爬蟲後呼叫Line notify API
commit
:::
4. Line notify 傳遞訊息時, 可能順序不對
:::success
解決
追加 sleep()
:::
5. PTT爬蟲資料只有內文才有完整日期
:::success
未知
原因: 追加功能 “只顯示幾天前的資料”
解法: 透過12&1月來判斷年分
commit
:::
最終流程
- github action 只用來建立執行環境 & 執行
forloop
2. 爬蟲執行
3. 資料轉換
4. 資料過濾
5. 爬蟲結束
END forloop
- line notify 傳訊息
後續可能的增加的功能
- 想要把參數隱藏起來
- github Environment variables
- 將上一次重複傳的資料移除
- 初步想法: 產生log檔案後, 建立commit push 至 github, 每次讀檔檢查內容