LINE機器人自動備份群組照片
前言
在執行工程時,經常會為了聯絡相關事宜建立LINE群組來進行交談,通常施工照片也會在這個群裡面進行上傳讓大家可以確認內容,上傳照片到LINE群組的時候除了直接上傳外,也可以透過建立相簿將照片永久保存。
在LINE群組的檔案機制,照片或文件會有一定時間的存活期,當過了存活期之後照片就會呈現無法下載的情形,因此將照片做一個額外存放的動作算是滿重要的一個手段,而這件事除了繁瑣也很可能會因為再次請求上傳的過程多存了不少張重複的照片,而這個部分相信大多數人都是透過人眼來進行判別,火眼金睛用久也是會累的。
希望能夠打造一個當群組內判定到照片資料時,能夠自動備份到指定硬碟並汰除重複照片的機器人,減少這些瑣事的發生。
至於照片後續要進行處理就可以利用施工照片VBA進行資料排序、批次改名、報表輸出。
操作畫面
基本工具
- LINEBOT
- MessengerAPI
- ngrok
- 主要是用來建立https連線給LINEBOT的webhook使用
- python
- flask
- linebotsdk
相關連結
實作邏輯
預先準備內容
- 建立flask並啟用app
- 啟用ngrok
- 複製將ngrok上面的對外連線IP
- 貼到LINEBOT的webhook
訊息接收過程
- LINEBOT在接受到群組內的訊息時
- 判定訊息屬性是否為Image
- 圖片內容會先暫時放在LINE機房並且生成一組token
- 收到訊息的同時會執行API(Webhook機制)
- API中會將訊息做過濾,藉由token取得照片到本地端
- 本地端資料庫會記錄已經存放的照片跟Image_hash
- 判定是否有重複的image_hash,如有則回傳"圖片已存在"
- 通過重複汰除機制過濾完成後可將照片存放到指定位置
程式碼
webhook
app_local.py
1 | # 存放在本地端sqlite+本地端硬碟 |
sql_utils.py
1 | from sqlalchemy import create_engine, Column, Integer, String, DateTime, JSON |
結語
如果您本身執行工程專案時有大量的照片需要進行自動備份,同時又有一台電腦可以不關機當作server用途,可以將他建立好python執行環境並參考上述的內容搭配使用,如有不懂的內容也歡迎聯繫作者來協助架設LINE群組機器人,自動備份工程群組內部照片省時又省力。