Как преобразовать журналы .ichat в текстовые файлы?

Как преобразовать файлы транскриптов iChat, которые создает Messages, в удобочитаемые текстовые файлы, которые можно открыть без приложения Messages?

Для справки, это файлы разговоров, расположенные в ~/Library/Messages/Archive.

Простое открытие файлов .ichat в текстовом редакторе включает в себя кучу дополнительных строк и хэшей. Открытие их в сообщениях и копирование и вставка в текстовый редактор работают, но я бы предпочел автоматизировать процесс, если это возможно.

Ответы (9)

Файлы, которые сохраняет Messages, имеют ichatрасширение файла.

Но из командной строки вы можете проверить их, чтобы увидеть, что они на самом деле являются двоичными файлами plist :

$ file transcript.ichat
transcript.ichat: Apple binary property list

Оказывается, вы можете легко преобразовать двоичные файлы plist в удобочитаемые XML-документы :

$ plutil -convert xml1 transcript.ichat

Теперь, когда вы fileснова запустите, вы увидите, что это файл XML:

$ file transcript.ichat
transcript.ichat: XML document text

Давай, открой и увидишь сам:

$ open transcript.ichat

Если вы знакомы с sqlite, вы можете просто экспортировать сообщения прямо из базы данных в Mountain Lion iMessage.

sqlite3 /Users/(username)/Library/Messages/chat.db

Из базы данных вы можете отправлять команды sql для получения любых сообщений и связанных полей, которые вас интересуют. Кроме того, вы можете изменить настройки вывода для записи непосредственно в файл.

Также помимо базы все фотографии хранятся в папке «Вложения».

Стенограммы iChat ( .ichatфайлы) не являются базами данных SQLite.

Посмотрите мой проект, который соберет все ваши разговоры и преобразует их в один читаемый текстовый файл. Он не будет конвертировать только одно сообщение iMessage, но соберет все ваши сообщения и вложения, создаст их резервные копии и поместит в удобочитаемый формат.

https://peterkaminski09.github.io/baskup

Работает ли это с файлами журналов iChat?
Он использует ваши файлы журнала iChat, найденные в вашем ./Library/Messages/chat.db, для преобразования в текстовый файл.
Это сработало хорошо для меня, спасибо! Я заметил, что он может пропустить самое начало истории сообщений, если у вас есть ОЧЕНЬ длинные разговоры (если только они не будут потеряны навсегда, если iMessage не хранит все сообщения, как я думал). Тем не менее, работа была сделана!
Я думаю, что основная проблема, которую я заметил, заключается в том, что когда вы открываете свой macbook после отправки большого количества сообщений на свой телефон, возникает задержка между iMessage на mac и телефоне, и это приводит к тому, что сообщения обрываются.
Это выглядит очень полезно, но есть ли способ удалить старые сообщения после того, как они были экспортированы/архивированы/что-то еще?

Я создал инструмент командной строки для преобразования этих файлов ichat в JSON, разделенные новой строкой.

Инструмент извлекает самую необходимую информацию: сообщение, отправитель, дату.

Вы можете просмотреть исходный код и/или загрузить двоичный файл по адресу https://github.com/kfatehi/ichat2json .

Если вы выберете печать из меню файлов, когда окно печати откроется, в левом нижнем углу будет кнопка PDF с раскрывающимся списком. Отсюда вы можете сохранить в формате pdf, опубликовать сценарий, отправить по почте в формате pdf или отправить в iTunes.

Для тех, у кого есть папки, полные файлов .ichat, независимо от того, являются ли они частью ~/Library/Messages, мой проект мгновенно конвертирует их в RTF или обычный текстовый формат: https://github.com/Amethyst . -Software/convert-ichat-files (предоставляется готовый бинарный файл). Основные сообщения, а также сообщения о передаче файлов (не самих файлов) и события клиента чата переводятся в текст. Также поддерживаются групповые чаты.

Для этого я создал приложение под названием «Past for iChat» (откройте журналы iChats/Chat в macOS 11+ и экспортируйте их в различные форматы): https://zeezide.de/en/products/past/

Это не идеальное решение, но я заметил, что сообщения всегда между Ä_и _$. Вы можете написать скрипт для извлечения всего текста, который начинается и заканчивается этими символами. (подойдет любой язык с поддержкой rexex)

Это похоже на идеальное применение рабочих процессов Automator или AppleScript, поскольку оба они могут выполнять поведение в стиле «нажимать кнопки на экране». Вы бы сказали «взять файл в качестве входных данных» и использовать что-то в разделе «печать» или «сообщения», если они есть, или использовать AppleScript, чтобы сказать ему открыть файл и нажать файл, распечатать и сохранить как pdf, а затем закрыть файл.

Не могли бы вы дать лучшее описание вашего ответа. Это наводит на размышления, но не показывает конкретного ответа для пользователя с шагами.