Tweet Nestでtwitterのログを保存

私はここ1年くらい、ほぼ毎日twitter、週に3-4回はfacebookを使ってるパワーユーザなのですが(典型的ギーク!)、皆さんこういうソーシャルツールのバックアップはどうしていますか?毎日記録し続けているライフログと呼んでもいいものを、完全に外部のサーバに預けるのは抵抗がありました。
一応Backupifyというサービスでバックアップしているのですが(↑にいいだけ書いといてこれも外部サービスだけど!)、facebookはまあ全部英語で書いてるからいいんだけど、このサイト日本語が文字化けするのです…。
このブログをwordpressに移転してからは、twitter toolsというプラグインでほぼリアルタイムに保存し、1週間分まとめてポストする、という風に保存してきました。しかし私がブログの更新をさぼると、最新記事に2つ続けてtwitterまとめの記事が並んだりするさみしい事態に。

そこでlifehackerjpでみたTweet Nestというフリーソフトを導入してみました。
検索もカスタマイズも可能なツイッター用バックアップツール「Tweet Nest」
できたバックアップページがこちら! どうでしょー、ちょっとしたtwilogみたいな感じです! twitpicなどは、サムネイルまで自動表示している! 最初は3200tweetまでしか取得できませんが、その後はそこで取得したものは消えずにどんどん増えていきます。

ちょっとはまる箇所があるので導入したメモを簡単に書きます。
※PHP 5.2以上(またはPECL JSONモジュールが入ったPHP 5.1)、MySQL 4.1以上が必要です

まずTweet Nestのサイトからダウンロードして解凍。サーバに適当なディレクトリを作ってアップロードします。
ブラウザで
http://サーバ/入れたディレクトリ
を実行。セットアップページが自動で出るので、twitterのユーザネームなどの欄に記入していきます。

セットアップ自体は結構簡単にできるんですが、ここからがはまるところその1! 設定が完了したら、
入れたディレクトリ/maintenance/loaduser.php
入れたディレクトリ/maintenance/loadtweets.php
それぞれユーザ情報とtweetを読み込むためにこの2つを実行しなさい、という表示が出ると思います。で押してみると、ユーザ名とパスワードが要求されます。
ユーザネームは、twitterの@を抜いたもの、パスワードは設定のときに入れたやつですよというので、何回入れても認証できない。

これフォーラムに投稿があるんですが、

I can confirm the same issue on 1&1 – I’m blaming it on them. From rooting around it looks like PHP isn’t receiving the $_SERVER authentication headers in either form – neither $_SERVER[‘HTTP_AUTHORIZATION’] NOR $_SERVER[‘PHP_AUTH_USER’]) && $_SERVER[‘PHP_AUTH_PW’] are coming in to the script. oh well; commenting out that block for now.

The backstory behind this issue: PHP can work with HTTP authentication directly, but only if it’s installed as an Apache module. Then those values PHP_AUTH_USER and PHP_AUTH_PW are filled in.

On the contrary, if it’s installed as a CGI module, then the .htaccess file inside the maintenance folder puts the username and password into the variable called HTTP_AUTHORIZATION. So if everything’s working correctly (which means that the .htaccess file must be installed correctly and adding PHP variables through it must be supported), then either one of those two variable combinations will be filled in once you’ve typed in username and password.

PHP_AUTH_USERとPHP_AUTH_PWとHTTP_AUTHORIZATIONをうまく受け取れてるサーバとそうでないサーバがあって、まあもろもろでうまくいかないんじゃね?ってことが大体書いてあるんじゃないかと↑(ななめ読みです) 私のサーバはロリポップなので、ロリポのふつうプランの人はこのパターンになるのかもしれません。
で最初に引用した人は、大胆にも該当箇所をコメントアウトした!!!とのこと。おいらもコメントアウトしたらうまくいったんだけど、.htaccessで制限かけてる意味ないのでw、以下のような措置をとりました。

1. maintenance/mpreheader.phpの該当箇所をコメントアウト
12行目 // Maintenance HTTP passwordから28行目まで全部さくっと。
2. maintenanceフォルダ下の.htaccessを変更

RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

となっているので、フツーのBASIC認証に変更。

できたー!!!

と思ったら……途中で切れてるtweetがあるー! はまったところその2!
アルファベット換算の140字で切ってるぽい????
ということでデータベースのtn_tweetsテーブルを見てみると…
本文を入れるところの型がvarchar(255)になっている!そりゃ日本語tweetは全部入らないこともあるわな。
text(長さは空欄)に変更します。

今度こそできたー!
http://ftcb.chu.jp/tn/
一度テーブルを空にして、再度読み込みをすると、欠落していたtweetもちゃんと入っていました。

loadtweets.phpをcron設定しといて、デイリーまたはウイークリーに動かすと自動でバックアップ取れるんでしょうねー。
結構探しやすいしかわいいIFなので、鯖借りてる人は入れてみると楽しいかもしれません。

1 person likes this post.