読者です 読者をやめる 読者になる 読者になる

SkypeのチャットログをEvernoteへぶち込む ~ Add the skype chat log to the Evernote~

ここ半年位?Skypeチャットをよくやるようになった。 で、ちょいちょい過去のやりとりを検索する機会があったんだけども、その度に思うのはSkypeのログ検索不便すぎということ。


Skypeのチャットログを検索しようと思うと、クライアント上だと過去ログが直近の期間分しか表示されていないから、一ヶ月前とかのログを検索する際にはロードする必要がある。検索機能が貧弱なのもあり、実にめんどい。


後、そもそも後で検索するような情報はちゃんとEvernoteにぶち込んでおきたいなと思い、チャットログは全部Evernoteにぶち込むことにした。


きっと誰かやってるだろうと思い、SkypeとEvernoteを連携するようなサービスを探してみたところ、ない!

仕方ないので自分で作ってみることにした。 どうせなら、AppleScriptを触ってみたいと思い、AppleScriptを使って作ってみた。


色々と思うところもあり、結局、

の2つの構成になった。

しょぼいスクリプトだけど、ブログ同様、こういうのも公開していこうと思ったので、この場で公開します!


Skypeチャットログを出力するシェルスクリプト

やれること

やれることは2つ。

  • 指定した日付以降のチャットログをテキストファイルに出力
  • 前回実行した時間以降のチャットログをテキストファイルに出力


使い方

シェルを実行する際に引数を渡さなければ、前回実行した以降のチャットログを出力するようにしているので、定期的に適当なタイミングでシェルを実行してログを出力。それを次のツールでEvernoteにぶち込んでおくイメージ。

最初はFrom/Toの日付を渡すとか検索条件を追加しようかとも思ったけど、いらないかなと思いシンプルに。一応、From日だけは渡せるようにしたけど、使うのは最初位?。


コード

ログを出力したいパスLOG_DIRSkypeのチャットログがあるディレクトリSKYPE_DIRを変えれば使えるはず。Skypeのチャットログはたぶん/Users/${macユーザ名}/Library/Application Support/Skype/${skypeユーザ名}にあると思われ。

やってることは簡単で引数があるか判断してそれをもとに検索SQLを作成。 SkypeのログはSQLiteということなので、sqliteで接続してSQL実行して、結果をテキストに出力。ただそれだけ。即席ツールなのでとりあえずエラーハンドリングはガン無視です。

#!/bin/sh
LOG_DIR=`pwd`
SKYPE_DIR="/Users/mac_user_name/Library/Application Support/Skype/skype_user_name/"

COMMAND="sqlite3 main.db"

if [ $# -eq 1 ]; then
    FROM_DATE=$1
else
    FROM_DATE=`cat $LOG_DIR/last_executed_time`
fi

SQL="select author, datetime(datetime(timestamp, 'unixepoch'), 'localtime'), body_xml from messages where timestamp >= strftime('%s', datetime('"$FROM_DATE"','utc'));"

cd "$SKYPE_DIR";
echo $SQL | $COMMAND > $LOG_DIR/skype_log_$FROM_DATE.txt;
echo `date '+%Y-%m-%d %H:%M:%S'` > $LOG_DIR/last_executed_time
exit;


選択したファイルをノートに添付してEvernoteにぶち込むAppleScript

やれること

選択したファイルを添付したノートをローカルのEvernoteに作成する。ただそれだけ。


使い方

このスクリプトを実行すると、FileChooserが開かれるから、Evernoteにぶち込みたいノートを選択するだけ。それで、ファイル名をノートの名称にして、事前に設定されているNotebookにノートが作成される。


コード

EvernoteのローカルAPIを叩いているだけなので特に認証情報の設定は不要。 ノートを作成したノートブック名を${TARGET_NOTEBOOK}に記述するだけで使えるはず。

tell application "Evernote"
    set targetNotebook to notebook named "${TARGET_NOTEBOOK}"
    set theFolder to choose file with prompt "Choose Folder ..."
    tell application "Finder"
        set fullPath to POSIX path of theFolder
        set targetFile to name of theFolder
    end tell
    create note title targetFile from file fullPath notebook targetNotebook
end tell


あとがき

Evernoteにぶち込むスクリプトを敢えて分けたのは一応理由があって、 普段、ブログの下書きとかちょっとしたメモとかをEvernoteにぶち込む際に使っているEverDesktopが微妙だから。(ちなみに高い><)


EverDesktop App
カテゴリ: 仕事効率化
価格: ¥850


最近出てきたEverDesktop、便利は便利なんだけど、色々と微妙なとこもあって、特に保存したファイルがあちこちにある場合、いちいちEvernoteにぶち込むファイルがあるパスを設定変更しないといけないはいけてない。 めんどいからEvernoteにぶち込みたいメモはいつも同じところに保存するようにしているけど、やっぱそれはそれでめんどい。


作って使ってみた感じ、EverDesktopより気軽なのでしばらく使っていって、改良していこうと思う。 ただ、EverDesktopの特徴であるMarkdownを展開してEvernoteに保存するのはこのスクリプトではできないから、Markdownのメモは今までどおりEverDesktopを使うしかない。残念。(どうやってるんだろうか。。。)


あと今回はローカルAPIを使ったけど、今度はCloud APIを使うことに挑戦しようと思う。


ちなみにローカルAPIここを参照。 日本語ページがあるのも素晴らしいけど、何よりサンプルが素晴らしい。AppleScriptもEvernote APIを使うのも初めてだったけど、サンプル見ればなんとなくわかる。

http://dev.evernote.com/intl/jp/documentation/local/chapters/Mac.php


最後に

なんとなく気分転換に始めたこのブログだけど、やってみるとやっぱほんとむずい。 とにかく文作がむずい。これはいい修行になる。 今後はしょぼくてもいいから情報発信もしていこうとも思ってるので、このブログは続けていこうと思います!!

なので、皆様、来年も宜しくお願いします。今年、一年お世話になりました。では、良いお年を。