たくさんの思い出が詰まったskypeのメッセージたち。
skypeのアプリ上で昔のメッセージを読み込もうとすると遅いし、
一年前以上のメッセージは読み込んでくれない。
何かあった時のために、読みやすい形でログが残ってあれば…
というわけで抽出方法です。
macの場合、
~/Library/Application Support/Skype/[skypeID]/
の中の
main.db
というデータベースのファイルからデータを抽出する。
cd ~/Library/Application Support/Skype/[skypeID]/
echo 'select datetime(timestamp,"unixepoch","localtime"), author, body_xml from Messages;' | sqlite3 ./main.db > skype.log
(ファイル名skype.logの部分は適宜変更する。csvにしたら表計算ソフトで読み込めるかも)
dataname(timestamp, "unixepoch","localtime")はタイムスタンプ(整数)のパース。
変換後は (発言時間)|(発言者のskypeid)|(発言者の表示名)|(発言内容)
というふうに出力される。
特定のグループチャットのみを抽出したいときは、まず
select datetime(timestamp,"unixepoch","localtime"), chatname, author, body_xml from Messages ;
のchatname
カラムをチェックすると#[グループチャット作成者のskypeID]/$[最初にグループチャットに加えられたメンバーのskypeID];[グループチャットのID(英数字16文字)]
というように出力されるので、
echo 'select datetime(timestamp,"unixepoch","localtime"), author, body_xml from Messages where chatname="#[グループチャット作成者のskypeID]/$[最初にグループチャットに加えられたメンバーのskypeID];[グループチャットのID(英数字16文字)]";' | sqlite3 ./main.db > skype.log
とすればいい。
おまけ
sqlite3 -html
とするとhtml形式で出力してる
おまけ2
echo 'select count() from messages;'|sqlite3 main.db
とすれば今までの総発言数(自分の発言+受信メッセージ)が分かる