自分のツイートを検索するにはTwilogが便利なんだけど、先日、データが全て消えてしまうトラブルがあって、現在は復旧したけれど、将来的に自分のPCで検索できればいいなと思ってた。私の場合HDDが壊れてデータを失ったことはあるのでローカル環境も安心ではないが…。
Twitterは全てのデータをバックアップできるようになっていて、その中にjsファイルがある。ただ、このサイズが大きい。この中から無駄な情報を省いてcsvファイルにできればいいなと思っていたら、tweet.js loaderというサイトを使えば可能だと分かった。それでcsvファイル形式にできたのだけど、それでもExcelで開くには重すぎた。データベースソフトを使えば、サイズは変わらなくても、軽くなるのではないかと探したら、「DB Browser for SQLite」という良さそうなソフトがあった。csv形式のデータをテーブルとして読み込める。tweet.js loaderで作成したcsvファイルを読み込んだら、数行、読み込み間違いがあったが、検索もできるし使えそう。
とりあえず、試しに使ってみた段階だけど、複数のアカウントのデータを一つのテーブルに入れて、検索できるようにしたい。検索ではなく抽出の方が良いが、できると思うが、これから覚えていく。

Twitterのつぶやきをブログ形式で保存
TwilogはTwitterのツイートをブログ形式で保存するサービスです。過去のツイートを簡単に見返すことができます。

tweet.js loaderで「tweets.js」を読み込む方法|めるぽん
ツイートの全履歴を見たいと思ったときに、tweet.js loaderというサイトがとても役に立ってきました。 Twitterデータをダウンロードし、zipファイルを解凍すると、javascript形式の「tweet.js」と言うファイルが...

窓の杜
「DB Browser for SQLite」“SQLite”のデータベースを管理できるソフト
コメント
csvファイルの読み込み失敗に関して、ツイート文の所を""で囲んでいる所と囲んでない所があって、囲んでない所で改行があると改行後が別のデータと認識されている感じ。必ずというわけじゃないと思うが…。
基本的に一行のデータの最後はlike数とretweet数なんだけど、そこがnullだったら変だなと思って次の行を見てくれれば、次の行が別のデータと認識されることはないと思うのだが、読み込み時の設定であるのかな?
それから、まだ見つけてないが気になるのが、ツイート文に""がある場合、読み込みをミスったりしないように何らかの工夫がされているのだろうか?
ちょっと心配。予め、読み込む前に、ツイート文の囲みを""ではないものにすれば良いのだが…。ただ、""でツイート文で囲まれてない場合に、""を置換すれば良いわけじゃないので、ちょっと考えないといけない。
あっ、そうか。tweet_idが数値じゃないレコードがどのレコードから外されたのか確認していたけれど、likeがnullのデータを修正すればいいんだ。そのデータはツイート文がカットされているはずだから。
レコードが6万件以上あるのに121件しか読み込まれてないテーブルがあった。
59182件ありそうなのに、読み込まれたレコードが59180件。
59182件というのは、csvファイルをnotopad++で開いて「\b\d{12,},\b」で検索した数なんだけど、ただ、tweet.js loaderだと987ページ目が20件だから59180件で正しい。
「\n\d{12,},\b」で検索したら59180件になった。ツイート文の中に該当する正数があったのだろう。
原因が分かった。
読み込まれていた。
テーブルのフィルターを掛けていて抽出されたのが121件だった。
テーブルを削除して、読み込み直してもフィルターが付いたままだった。
一つのアカウントで3つのテーブルに分かれていたのだけど、例えば、SQLで次のようにすれば2つを繋げられるみたい。
CREATE TABLE "@ishii-3" AS select * from "@ishii-1" union select * from "@ishii-2";
一つのアカウントの3つのテーブルを一つのまとめた。ただ、Twilogと比べて1万件くらい足りないな。バックアップ時に不足したか、Twilogで既に存在しないツイートや重複があるか…。
Xのプロフィールにだいたいのポスト数が表示されているのだけど、それはTwilogよりも1万件くらい少ない。
リアルタイムでTwilogが更新されていた時って、削除されたアカウントを削除してたと思うから、復旧した際にそのアカウントのツイートも戻ったのかな?
3つのアカウントのテーブルを作成して、一度にフィルターが利用できるように、次のコードでビューを作った。
CREATE VIEW "tweet_all_view" AS
SELECT
'テーブル1' AS source_table,
tweet_id, timestamp, text, likes, retweets
FROM "テーブル1"
UNION ALL
SELECT
'テーブル2' AS source_table,
tweet_id, timestamp, text, likes, retweets
FROM "テーブル2"
UNION ALL
SELECT
'テーブル3' AS source_table,
tweet_id, timestamp, text, likes, retweets
FROM "テーブル3";
ishii00141が193,016レコード、hitorinezumiが35,842レコード、もう一つが178,247レコードで、"tweet_all_view"は407,105レコード。
たぶん完成。