前陣子看了這篇解析 Line 對話的文章 讓我對解析 Line 匯出的純文字聊天紀錄有點概念,後來一時興起想計算我和朋友總共聊了多少訊息,寫了一個很簡單的小程式。


真的超簡單 就這樣幾行,主要是利用 Regular Expression 簡單比對就可以得出來。

1
2
3
4
5
6
7
8
import re

f = open("data.txt","r",encoding="utf-8")
line = f.read()
f.close()

arr = re.findall(r"[0-9]+:[0-9]+\s", line)
print(len(arr))

接著我把它改成可以利用命令列傳遞檔名參數,這樣我就不用每次都打開程式碼修改。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import re
import sys

if(len(sys.argv) != 2):
    exit("Arguments error!")

filename = sys.argv[1]

line = []

try:
    f = open(filename,"r",encoding="utf-8")
    line = f.read()
    f.close()
except FileNotFoundError as identifier:
    print(str(identifier))
finally:
    pass

arr = re.findall(r"[0-9]+:[0-9]+\s", line)
print(len(arr))

但是我真的很懶,想要直接使用,也想說可以給更多人用,所以利用 pyinstaller 封裝成 EXE 檔哈哈哈哈哈。


Line-counter 檔案下載


使用說明

以 IPhone IOS 13 為例

首先到聊天室中點選右上角的功能選單,三條線的那個

再點擊右上角的齒輪進入設定

選擇傳送聊天紀錄

可以存到 Keep 再用電腦版下載或是存到雲端硬碟中,我個人喜歡轉傳給對話機器人之類的,這樣可以直接從對話紀錄中下載文字檔

下載之後會看到長這樣的檔案,裡面有純文字的聊天紀錄

接著啟動命令提示字元到該目錄下,執行指令

1
line-counter.exe "[LINE] 與LINE Notify的聊天.txt"

Enter 後就會看到對話總數了


因為 Line 目前沒有提供訊息數的 API,只能用這種方式計算,其實也可以用 TK 做個簡單的 GUI,但想想就這一個功能也沒有必要,所以就維持 CLI 模式哈哈哈,如果有人想自行打包的話原始碼就在上面,自取囉~