本文へ移動

チャットのエクスポート ​

Telegram Desktop:チャットを開き、右上の ⋯ をクリックして、チャット履歴をエクスポート… を選び、エクスポート

Telegram ​

Telegram Desktop(macOS、Windows、Linux)で、チャットを開く → ⋯ → チャット履歴をエクスポート… → エクスポート。

  • 写真、動画、ボイスメッセージ、スタンプ、GIF はオンのままにしてください。ペルソナがそれらを使います。
  • 形式は HTML(messages.html)と、機械が読める JSON(result.json)のどちらでも動きます。
  • エクスポートのフォルダ、またはその .zip をページにドロップしてください。

WhatsApp ​

スマートフォンで、チャットを開く → ⋮ → その他 → チャットをエクスポート(iPhone では連絡先名をタップ → チャットをエクスポート) → メディアを含める。.zip をコンピュータに送り、ページにドロップしてください。

メディアなしでエクスポートしたチャットは 1 つの .txt になりますが、それでも動きます。

大きなエクスポート ​

10 万件以上のメッセージや数 GB のエクスポートも、同じ手順で動きます。フォルダをドロップしてください。ページには今起きていることが表示されます。

  1. フォルダを読み取り中… ファイルを数えます(数万件のファイルを一覧にするには、ブラウザが少し時間をかけることがあります)。
  2. チャットが先です。 メッセージのページ(または result.json、または WhatsApp の .txt)が、メディアより先にアップロードされて読み込まれます。このエクスポートがすでにインポート済みなら、インポートはここで終わり、そのチャットを開きます。メディアはアップロードされません。メディアがディスクに入らない場合は、大きなものを送る前に必要な容量が伝えられます。
  3. 1.2 GB / 3.4 GB をアップロード中(35%)· 30,905 件中 9,000 件:メディアは小さなバッチに分けて、順番に送られます。ブラウザが巨大な 1 つのリクエストを作ることはなく、途中で切れたバッチは個別に再試行されます。自分のコンピュータで実行する場合、サイズの上限はありません。
  4. メッセージを読み取り中:121 ページ中 37 ページ · 36,000 件:すべてのページが並列に一度ずつ読み込まれます。
  5. メディアを確認中とメディアを移動中:重複を見つけるためにファイルのハッシュが計算され、データフォルダに(2 回コピーではなく)移動されます。
  6. 保存中。その後、新しいチャットダイアログが開きます。

インポートは一度に 1 つだけ実行されます。エラーはドロップゾーンに残り、フォルダを選び直せます。

デスクトップアプリでは、このアップロードは行われません。アプリはフォルダ、.zip、または .txt を、その場所から直接読み込みます(手順 4 から 6)。こちらのほうが速く、以下のブラウザの問題の影響も受けません。

ファイルをアップロードできないとき(ブラウザ)

ブラウザがもう読めないファイル(移動された、変更された、またはダウンロードされていない iCloud/OneDrive のプレースホルダー)は見つけ出されてスキップされます。また、そのバッチを壊し続ける 1 つのファイルも同様です。そのファイルが分離されるまで、バッチは分割されます。スキップされたメディアはチャットでは欠けているように表示されます。インポート後のメッセージにはその 1 つが挙げられ、ブラウザのコンソールには全部が表示されます。チャットのファイル自体が送れない場合は、インポートが止まり、そのファイルが示されます。エラーにはサーバーが受け取った量が出るので(例:サーバーが受け取ったのは 4,096 バイト中 1,200 バイト)、接続の問題かブラウザの問題かを見分けやすくなっています。

インポート中は、何もコンピュータの外に出ず、モデルも呼び出されません。メディアは、メディアライブラリで説明を押したときだけ説明されます。

rooftop --import <フォルダ> を使うと、フォルダはその場で読み込まれ、ファイルはコピーされます(移動されることは決してありません)。進捗はログに記録されます。同じコンピュータ上の巨大なエクスポートには、これが最も速い方法です。アップロードも一時フォルダへの 2 つ目のコピーもありません。

認識されるもの ​

ソースファイル
Telegram HTMLmessages.html、messages2.html、…
Telegram JSONresult.json(フォルダに messages.html がないときに使われます)
WhatsAppWhatsApp Chat with <名前>.txt(Android)または _chat.txt(iOS)。フォルダ内、.zip 内、または単独
  • Telegram:改行のあるテキスト、リンク、引用、コード、返信と部分引用、転送、編集、サービスメッセージ、リアクション、リンクのプレビュー、写真、動画、丸い動画、ボイスメッセージ、音声、ファイル、スタンプ(.webp、.webm、.tgs)、GIF、位置情報、連絡先、投票、通話。
  • WhatsApp:Android と iOS の形式、12 時間制と 24 時間制の時計、日/月の両方の順序に対応し、ファイルごとに判別されます。複数行のメッセージ、編集、添付ファイルは保持されます。削除されたメッセージと暗号化の通知はスキップされ、<Media omitted> は利用できないものとして印が付きます。

メディアファイルはハッシュ化されるので、5 回送られたスタンプはライブラリの 1 項目になります(stk_…、gif_…、pho_…)。

HTML エクスポートのリアクション

HTML エクスポートでは、誰がリアクションしたかは分かりません。1 対 1 のチャットでは、リアクションは相手に割り当てられ、数が 2 のときは両方に割り当てられます。

MIT ライセンスで公開。