78
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

skypeの全チャットログを読みやすい形で保存する(mac)

Last updated at Posted at 2013-02-03

たくさんの思い出が詰まったskypeのメッセージたち。
skypeのアプリ上で昔のメッセージを読み込もうとすると遅いし、
一年前以上のメッセージは読み込んでくれない。
何かあった時のために、読みやすい形でログが残ってあれば…

というわけで抽出方法です。

macの場合、
~/Library/Application Support/Skype/[skypeID]/
の中の
main.db
というデータベースのファイルからデータを抽出する。

skypeLogging.sh
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)|(発言者の表示名)|(発言内容) というふうに出力される。

特定のグループチャットのみを抽出したいときは、まず

skypeLogging.sql
select datetime(timestamp,"unixepoch","localtime"), chatname, author, body_xml from Messages ;

chatnameカラムをチェックすると#[グループチャット作成者のskypeID]/$[最初にグループチャットに加えられたメンバーのskypeID];[グループチャットのID(英数字16文字)]というように出力されるので、

skypeLogging.sh
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
とすれば今までの総発言数(自分の発言+受信メッセージ)が分かる

78
84
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?