Перейти к содержимому

Экспорт чата ​

Telegram Desktop: откройте чат, нажмите ⋯ в правом верхнем углу, выберите Экспорт истории чата…, затем Экспорт

Telegram ​

В Telegram Desktop (macOS, Windows, Linux): откройте чат → ⋯ → Экспорт истории чата… → Экспорт.

  • Оставьте включёнными фото, видео, голосовые, стикеры и GIF: персонаж их использует.
  • Работают оба формата: HTML (messages.html) и машиночитаемый JSON (result.json).
  • Перетащите папку экспорта или её .zip на страницу.

WhatsApp ​

На телефоне: откройте чат → ⋮ → Ещё → Экспорт чата (iPhone: нажмите на имя контакта → Экспорт чата) → Включить медиа. Отправьте .zip на компьютер и перетащите его на страницу.

Чат, экспортированный без медиа, — это один .txt, и он тоже работает.

Большие экспорты ​

Экспорты на 100 000+ сообщений и несколько гигабайт работают так же: перетащите папку. Страница показывает, что происходит:

  1. Чтение папки… подсчитывает файлы (браузеру может потребоваться время, чтобы перечислить десятки тысяч).
  2. Сначала чат. Страницы сообщений (или result.json, или .txt WhatsApp) загружаются и читаются до медиа. Если этот экспорт уже импортирован, импорт заканчивается здесь и открывает его, и медиа не загружаются. Если медиа не помещаются на диск, вам сообщат, сколько места нужно, прежде чем отправлять что-либо крупное.
  3. Загрузка 1,2 ГБ из 3,4 ГБ (35 %) · 9 000 из 30 905 файлов: медиа идут небольшими пакетами, один за другим. Браузер никогда не создаёт один гигантский запрос, а прерванный пакет повторяется отдельно. На собственном компьютере ограничения по размеру нет.
  4. Чтение сообщений: страница 37 из 121 · 36 000 сообщений: все страницы читаются один раз, параллельно.
  5. Проверка медиа и Перемещение медиа: файлы хешируются, чтобы найти дубликаты, и перемещаются (не копируются дважды) в папку данных.
  6. Сохранение, после чего открывается окно Новый чат.

Одновременно выполняется только один импорт; ошибка остаётся видимой в зоне перетаскивания, и можно выбрать папку заново.

В настольном приложении загрузки не происходит: приложение читает папку, .zip или .txt прямо из того места, где они лежат (шаги 4–6), что быстрее и не затрагивается проблемами браузера ниже.

Когда файл нельзя загрузить (браузер)

Файл, который браузер больше не может прочитать (перемещён, изменён или является заглушкой iCloud/OneDrive, которая не загружена), обнаруживается и пропускается, как и один файл, из-за которого пакет постоянно ломается: пакет делится, пока этот файл не будет изолирован. Пропущенные медиа в чате отображаются как отсутствующие; сообщение после импорта называет один из них, а консоль браузера перечисляет все. Если сам файл чата не может быть отправлен, импорт останавливается и называет его. Ошибки показывают, сколько байт получил сервер, например сервер получил 1 200 из 4 096 байт, поэтому проблему соединения легко отличить от проблемы браузера.

Во время импорта ничего не покидает ваш компьютер и модель не вызывается. Медиа описываются, только когда вы нажимаете Описать в медиатеке.

С rooftop --import <папка> папка читается на месте, а её файлы копируются, но никогда не перемещаются; ход работы записывается в журнал. Для огромного экспорта на том же компьютере это самый быстрый путь: без загрузки и без второй копии во временной папке.

Что распознаётся ​

ИсточникФайлы
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> помечается как недоступное.

Файлы медиа хешируются, поэтому стикер, отправленный пять раз, становится одним элементом медиатеки (stk_…, gif_…, pho_…).

Реакции в HTML-экспортах

HTML-экспорты не сообщают, кто поставил реакцию. В личных чатах реакция приписывается другому участнику, а при счёте 2 — обоим.

Распространяется по лицензии MIT.