見出し画像

X(Twitter)の自分の全投稿をアーカイブする

今回はMMDに関する内容ではなく、先日発表いたしましたX対応のなかで言及した『X公式アーカイブ機能』の利用方法と、発生しうるエラーの修正法をご紹介します。


X公式アーカイブ機能

Xには自分の全投稿をアーカイブとしてダウンロードする機能が備わっています。

ダウンロードしたアーカイブは、HTMLファイルとJSファイルで構成されており、ブラウザでTwitter(Xではなく)を閲覧するように、自分の全投稿を見ることができます。

ダウンロードしたアーカイブ。青い鳥ちゃんが健在!

アーカイブをダウンロードする方法

1. アーカイブをリクエストする

Xの設定から、以下の順にすすみます。

  1. 設定とプライバシーを開く

  2. アカウントを選択

  3. データのアーカイブをダウンロード

パスワードとメールかSMSによる二段階認証を求められるので、ご希望の認証方法を選択してください。
認証が完了すると、『アーカイブをリクエスト』するボタンが表示されているので、クリックします。

2. アーカイブをダウンロードする

アーカイブはリクエストして即座にダウンロードできるわけではなく、データの準備が整うと、通知欄にお知らせがきます。
私は30600件ほどのツイートと画像で計4GBほどのデータでしたが、およそ24時間後に通知がきました。

通知が来たら、リクエストと同じ画面にダウンロードボタンが表示されているので、クリックしてダウンロードします。

データサイズによっては、ダウンロードに数時間を要するので、気長に待ちましょう。

3. アーカイブデータを解凍(展開)する

アーカイブデータがダウンロードできたら、zipファイルを解凍(展開)します。

解凍したzipファイルの中身

解凍すると、上記のようなファイルとフォルダが入っているので、『Your archive.html』をダブルクリックします。

まるでTwitterのようなページが開く

ブラウザがたちあがり、Twitterのような、というかTwitterですねw
Twitterが開きますw
あとはTwitterを閲覧する感覚で、ツイートや、いいね、モーメントなどを閲覧できます!


いいね(Likes)閲覧中にエラーが発生する場合

いいね欄は他者のツイートなので、仕様上以下のような表示なるようです。

  • アイコンはデフォルトアイコン

  • 画像は表示されない

これ自体は不具合ではないのですが、スクロールをしてるうちに以下のような表示になる場合があります。

いいね(Likes)をスクロールしていくと、エラーが発生

画面上は、もう一度アーカイブをダウンロードするように促されますが、原因は「いいね」したツイートの中に、削除済みの投稿が含まれている場合に発生するので、何度ダウンロードしても同じことが起こります。

このままでは、ほかのいいね投稿もみれないので、修正方法をご紹介します。

 1. バックアップを作成

  1. detaフォルダを開く

  2. like.jsというファイルを複製(コピー&ペースト)する

  3. コピーした方のファイルを『_backup_like.js』という名前に変更する

弊講座をご覧いただいている皆様にはおなじみかと思いますが、データは弄ると壊れる可能性があるので、しっかりバックアップを取っておきましょう。

正直、変更するファイル名は何でも構いません。
どちらが『バックアップで、触ってはいけない方』という名前にしておくと安心です。

2. コード修正

コピー元の『like.js』ファイルをテキストエディタで開きます。
必ず、名前変更していない『like.js』を開いてください。

『like.js』を開くと、以下のような形のデータが格納されています。

window.YTD.like.part0 = [
  {
    "like" : {
      "tweetId" : "9999999999999999999",
      "fullText" : "ツイート本文テキスト",
      "expandedUrl" : "https://twitter.com/i/web/status/9999999999999999999"
    }
  }
];

この冒頭のwindow.YTD.like.part0はどこか別の場所にコピーしておいてください。

コピーできたら、冒頭『window.YTD.like.part0』を『const likes』に書き換えます。

const likes = [
  {
    "like" : {
      "tweetId" : "9999999999999999999",
      "fullText" : "ツイート本文テキスト",
      "expandedUrl" : "https://twitter.com/i/web/status/9999999999999999999"
    }
  }
];

続いて、行末に以下の記述を追加します。
必ず、一番最後に追加してください。

window.YTD.like.part0 = likes.map((post) => {
  if (!Object.prototype.hasOwnProperty.call(post.like, "fullText")) {
    return {
      like: {
        tweetId: post.like.tweetId,
        fullText: "",
        expandedUrl: post.like.tweetId,
      },
    };
  }

  return post;
});

全体では以下のようなコードになります。
(実際にはconst likes = []の[と]の間には大量のデータがありますが、省略)

const likes = [
  {
    "like" : {
      "tweetId" : "9999999999999999999",
      "fullText" : "ツイート本文テキスト",
      "expandedUrl" : "https://twitter.com/i/web/status/9999999999999999999"
    }
  }
];

window.YTD.like.part0 = likes.filter((post) =>
  Object.prototype.hasOwnProperty.call(post.like, "fullText")
);

あとは上書き保存して、完成です。

3. ブラウザリロード

修正したファイルを読み込むために、アーカイブを開いたブラウザタブで、F5(リロード)をしましょう。

いいね欄が再読み込みされて、最後までエラーせずにスクロールできれば、修正は完了です!

この記事が気に入ったらサポートをしてみませんか?