Twitterのバックアップをオフラインで検索したい

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


未分類
管理人のマストドンアカウントへのリンクなど

コメント

  1. ishii ishii より:

    csvファイルの読み込み失敗に関して、ツイート文の所を""で囲んでいる所と囲んでない所があって、囲んでない所で改行があると改行後が別のデータと認識されている感じ。必ずというわけじゃないと思うが…。
    基本的に一行のデータの最後はlike数とretweet数なんだけど、そこがnullだったら変だなと思って次の行を見てくれれば、次の行が別のデータと認識されることはないと思うのだが、読み込み時の設定であるのかな?
    それから、まだ見つけてないが気になるのが、ツイート文に""がある場合、読み込みをミスったりしないように何らかの工夫がされているのだろうか?
    ちょっと心配。予め、読み込む前に、ツイート文の囲みを""ではないものにすれば良いのだが…。ただ、""でツイート文で囲まれてない場合に、""を置換すれば良いわけじゃないので、ちょっと考えないといけない。

    • ishii ishii より:

      あっ、そうか。tweet_idが数値じゃないレコードがどのレコードから外されたのか確認していたけれど、likeがnullのデータを修正すればいいんだ。そのデータはツイート文がカットされているはずだから。

  2. ishii ishii より:

    レコードが6万件以上あるのに121件しか読み込まれてないテーブルがあった。

  3. ishii ishii より:

    一つのアカウントで3つのテーブルに分かれていたのだけど、例えば、SQLで次のようにすれば2つを繋げられるみたい。

    CREATE TABLE "@ishii-3" AS select * from "@ishii-1" union select * from "@ishii-2";

    • ishii ishii より:

      一つのアカウントの3つのテーブルを一つのまとめた。ただ、Twilogと比べて1万件くらい足りないな。バックアップ時に不足したか、Twilogで既に存在しないツイートや重複があるか…。

      • ishii ishii より:

        Xのプロフィールにだいたいのポスト数が表示されているのだけど、それはTwilogよりも1万件くらい少ない。
        リアルタイムでTwilogが更新されていた時って、削除されたアカウントを削除してたと思うから、復旧した際にそのアカウントのツイートも戻ったのかな?

  4. ishii ishii より:

    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";

タイトルとURLをコピーしました