[ruby]チャットワークのログ保存ツール goodbye_chatwork をインストールしてみた


みなさんこんばんは。世間はクリスマス一色ですね。リア充爆発しろ!あ、取り乱しました。危うく echo 'サンタ' | grep -o . | xargs | awk '{print $1$3$2}' を召喚するところな @nullpopopo でございます。そういや2011年のクリスマスイヴには、Techにゃんこというインターネッツラヂオで「リア充死ね!」と叫んだ瞬間が最高聴取率を叩きだしたことを思い出しました。かなり酔っ払ってたので、爆発しろじゃなくて死ねと本音が出てしまったようです。こわいこわい。で、今年の年末は2014/12/28 16:00頃よりUstreamでダラダラ電波を垂れ流します。数時間の人生を無駄にされたい方は是非お付き合いいただければ・・・。

閑話休題。とあるプロジェクトは私を含め自宅やコワーキングスペースで仕事をしているメンバーばかりなので、コミュニケーションは主にchatworkを利用しています。先日、資料を作ってチャットに添付したはいいのですが、ある日自宅のファイルサーバーに置いたその資料を見たときに、「そういやこの資料、何がキッカケで作ったんだっけ?」と思い出すのに時間がかかってしまいました。チャットのログを遡ればよいのですが、作った資料と一緒にログを保存しておけばすぐに思い出すことができるので、できればそうしたいところです。

チャットワークの機能一覧を見ると、チャットログ・エクスポート機能は「KDDI ChatWork」でないと使うことができないじゃないですか・・・しかし世の中には神様がいるもので、神はチャットワークのチャットログと添付ファイルをまるっとダウンロードするツールを作りたもうたではありませんか!ダウンロードはgithubからもできますが、今回はgemからインストールすることにします。bundlerのバージョンが1.6以上の環境に対応しています。

それではインストールしてみましょう。

rubyのバージョン確認
$ rpm -q ruby
ruby-2.1.5-2.fc20.x86_64
bundlerのインストール
$ sudo gem install bundler
Fetching: bundler-1.7.9.gem (100%)
Successfully installed bundler-1.7.9
Parsing documentation for bundler-1.7.9
Installing ri documentation for bundler-1.7.9
Done installing documentation for bundler after 2 seconds
1 gem installed
$ bundler --version
Bundler version 1.7.9
goodbye_chatworkのインストール
$ sudo gem install goodbye_chatwork
Fetching: multipart-post-2.0.0.gem (100%)
Successfully installed multipart-post-2.0.0
Fetching: faraday-0.9.0.gem (100%)
Successfully installed faraday-0.9.0
Fetching: unf_ext-0.0.6.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf_ext-0.0.6
Fetching: unf-0.1.4.gem (100%)
Successfully installed unf-0.1.4
Fetching: domain_name-0.5.23.gem (100%)
Successfully installed domain_name-0.5.23
Fetching: http-cookie-1.0.2.gem (100%)
Successfully installed http-cookie-1.0.2
Fetching: faraday-cookie_jar-0.0.6.gem (100%)
Successfully installed faraday-cookie_jar-0.0.6
Fetching: goodbye_chatwork-0.0.2.gem (100%)
Successfully installed goodbye_chatwork-0.0.2
Parsing documentation for domain_name-0.5.23
Installing ri documentation for domain_name-0.5.23
Parsing documentation for faraday-0.9.0
Installing ri documentation for faraday-0.9.0
Parsing documentation for faraday-cookie_jar-0.0.6
Installing ri documentation for faraday-cookie_jar-0.0.6
Parsing documentation for goodbye_chatwork-0.0.2
Installing ri documentation for goodbye_chatwork-0.0.2
Parsing documentation for http-cookie-1.0.2
Installing ri documentation for http-cookie-1.0.2
invalid options: -SHN
(invalid options are ignored)
Parsing documentation for multipart-post-2.0.0
Installing ri documentation for multipart-post-2.0.0
Parsing documentation for unf-0.1.4
Installing ri documentation for unf-0.1.4
Parsing documentation for unf_ext-0.0.6
Installing ri documentation for unf_ext-0.0.6
Done installing documentation for domain_name, faraday, faraday-cookie_jar, goodbye_chatwork, http-cookie, multipart-post, unf, unf_ext after 4 seconds
8 gems installed
$ which goodbye_chatwork
/usr/bin/goodbye_chatwork

基本的な使い方は goodbye_chatwork -i 【メールアドレス】 -p 【パスワード】 です。この引数で実行すると、自身のアカウントで参加できるチャットの一覧が表示されます。

$ goodbye_chatwork -i 【メールアドレス】 -p 【パスワード】
2014-12-22T19:32:00+09:00 login as 【メールアドレス】 ...
2014-12-22T19:32:00+09:00 load initial data...
2014-12-22T19:32:02+09:00 load account info
1234567 mychat 4
2345678 ○山○夫 1
34567890 □□プロジェクトグループチャット 1745

それでは「□□プロジェクトグループチャット」のログをダウンロードしてみましょう。先ほど表示したチャットの一覧から、1フィールド目にあるチャットの番号を引数に与えます。

$ goodbye_chatwork -i 【メールアドレス】 -p 【パスワード】 -e 34567890
2014-12-22T19:32:46+09:00 login as 【メールアドレス】 ...
2014-12-22T19:32:46+09:00 load initial data...
2014-12-22T19:32:48+09:00 load account info
2014-12-22T19:32:51+09:00 mkdir chatwork_logs
2014-12-22T19:32:51+09:00 export logs 34567890 ...
2014-12-22T19:32:51+09:00 get old caht 0- ...
2014-12-22T19:32:52+09:00 get old caht XXXXXXXXX- ...
2014-12-22T19:32:54+09:00 get old caht XXXXXXXXX- ...
2014-12-22T19:32:56+09:00 get old caht XXXXXXXXX- ...
(中略)
2014-12-22T19:34:00+09:00 create chatwork_logs/34567890_□□プロジェクトグループチャット.csv

「ホームディレクトリ/chatwork_logs」の下に「チャット番号_チャット名.csv」というファイルが保存されます。

$ ls -l ${HOME}/chatwork_logs/□□プロジェクトグループチャット.csv
-rw-rw-r-- 1 nullpopopo nullpopopo 285060 12月 22 19:34 /home/nullpopopo/chatwork_logs/34567890_□□プロジェクトグループチャット.csv

チャットに添付したファイルも含めてダウンロードしたい場合は、オプションの「-e」を「-x」に変えて実行します。

$ goodbye_chatwork -i 【メールアドレス】 -p 【パスワード】 -x 34567890

こうすることで、csvファイルと一緒に添付ファイルのディレクトリも出来上がります。

$ ls -l ${HOME}/chatwork_logs
合計 284
drwxrwxr-x 2 nullpopopo nullpopopo   4096 12月 22 20:49 34567890_files_□□プロジェクトグループチャット
-rw-rw-r-- 1 nullpopopo nullpopopo 285060 12月 22 20:49 34567890_□□プロジェクトグループチャット.csv

添付ファイルは、ファイル名の先頭に数字がつくので、同じファイルを何度もアップロードした場合、接頭語の数字が違う別ファイルとして保存されます。ただし、ファイルのタイムスタンプはオリジナルの日付ではなく、ダウンロードした時点の日付になっているので、中身を見て確認する必要がありそうです(´・_・`)

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例