Wie kann ich .ichat-Protokolle in Textdateien konvertieren?

Wie konvertieren Sie die von Messages erstellten iChat-Transkriptdateien in menschenlesbare Textdateien, die ohne die Messages-App geöffnet werden können?

Als Referenz sind dies die Konversationsdateien, die sich in ~/Library/Messages/Archive.

Das einfache Öffnen der .ichat-Dateien in einem Texteditor enthält eine Reihe zusätzlicher Zeichenfolgen und Hashes. Das Öffnen in Nachrichten und das Kopieren und Einfügen in einen Texteditor funktioniert, aber ich würde es vorziehen, den Vorgang nach Möglichkeit zu automatisieren.

Antworten (9)

Die Dateien, die Messages speichert, haben eine ichatDateierweiterung.

Aber von der Befehlszeile aus können Sie sie überprüfen, um zu sehen, dass es sich tatsächlich um binäre Plist - Dateien handelt:

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

Es stellt sich heraus, dass Sie binäre Plist-Dateien einfach in menschenlesbare XML-Dokumente konvertieren können :

$ plutil -convert xml1 transcript.ichat

Wenn Sie jetzt fileerneut ausführen, können Sie sehen, dass es sich um eine XML-Datei handelt:

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

Machen Sie weiter – öffnen Sie es und überzeugen Sie sich selbst:

$ open transcript.ichat

Wenn Sie mit sqlite vertraut sind, können Sie die Nachrichten einfach direkt aus der Datenbank auf Mountain Lion iMessage exportieren.

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

Von der Datenbank aus können Sie SQL-Befehle senden, um alle Nachrichten und zugehörigen Felder zu erhalten, die Sie interessieren. Außerdem können Sie die Ausgabeeinstellungen ändern, um direkt in eine Datei zu schreiben.

Außerdem werden zusätzlich zur Datenbank alle Fotos im Ordner „Anhänge“ gespeichert.

iChat-Transkripte ( .ichatDateien) sind keine SQLite-Datenbanken.

Schauen Sie sich mein Projekt an, das alle Ihre Gespräche aufnimmt und sie in eine lesbare Textdatei umwandelt. Es konvertiert nicht nur eine einzelne iMessage, sondern sammelt alle Ihre Nachrichten und Anhänge, sichert sie und bringt sie in ein für Menschen lesbares Format.

https://peterkaminski09.github.io/baskup

Funktioniert es mit iChat-Protokolldateien?
Es verwendet Ihre iChat-Protokolldateien, die sich in Ihrer ./Library/Messages/chat.db befinden, um sie in eine Textdatei zu konvertieren.
Das hat bei mir gut funktioniert, danke! Ich stelle fest, dass es den Anfang der Nachrichtenverläufe überspringen kann, wenn Sie Gespräche haben, die SEHR lang sind (es sei denn, sie gehen für immer verloren, wenn iMessage nicht alle Nachrichten speichert, wie ich dachte). Habe die Arbeit trotzdem erledigt!
Ich denke, das Hauptproblem, das mir aufgefallen ist, ist, dass beim Öffnen Ihres Macbooks, nachdem Sie viele Nachrichten auf Ihrem Telefon gesendet haben, diese Verzögerung zwischen iMessage auf dem Mac und dem Telefon auftritt und dies dazu führt, dass die Nachrichten abgeschnitten werden.
Das sieht sehr nützlich aus, aber gibt es eine Möglichkeit, ältere Nachrichten zu löschen, nachdem sie exportiert/archiviert/was auch immer wurden?

Ich habe ein Befehlszeilentool zum Konvertieren dieser Ichat-Dateien in durch Zeilenumbrüche getrenntes JSON erstellt

Das Tool extrahiert die wesentlichen Informationen: Nachricht, Absender, Datum

Sie können den Quellcode anzeigen und/oder Binärdateien unter https://github.com/kfatehi/ichat2json herunterladen

Wenn Sie Drucken aus den Dateimenüs auswählen, wird beim Öffnen des Druckfelds unten links eine PDF-Schaltfläche mit einem Dropdown-Menü angezeigt. Von hier aus können Sie als pdf speichern, post scripten, als pdf mailen oder an iTunes senden.

Für diejenigen mit Ordnern voller .ichat-Dateien, unabhängig davon, ob sie Teil von ~/Library/Messages sind oder nicht, wird mein Projekt diese sofort in das RTF- oder Nur-Text-Format konvertieren: https://github.com/Amethyst -Software/convert-ichat-Dateien (vorgefertigte Binärdatei wird bereitgestellt). Grundlegende Nachrichten sowie Dateiübertragungsnachrichten (nicht die Dateien selbst) und Chat-Client-Ereignisse werden in Text übersetzt. Gruppenchats werden ebenfalls unterstützt.

Dazu habe ich eine App namens „Past for iChat“ erstellt (iChats/Chat-Protokolle auf macOS 11+ öffnen und in verschiedene Formate exportieren): https://zeezide.de/en/products/past/

Dies wäre keine perfekte Lösung, aber ich bemerke, dass die Nachrichten immer zwischen Ä_und stehen _$. Sie könnten ein Skript schreiben, um den gesamten Text zu extrahieren, der mit diesen Zeichen beginnt und endet. (Jede Sprache mit Rexex-Unterstützung würde ausreichen)

Dies scheint eine ideale Anwendung von Automator-Workflows oder AppleScript zu sein, da beide das Verhalten im Stil von "Tasten auf dem Bildschirm drücken" ausführen können. Sie würden sagen "Datei als Eingabe nehmen" und etwas unter "Drucken" oder "Nachrichten" verwenden, wenn es eine davon gibt, oder AppleScript verwenden, um es anzuweisen, die Datei zu öffnen und auf "Datei" und "Drucken" zu klicken und als PDF zu speichern und dann schließen Sie die Datei.

Könnten Sie Ihre Antwort besser beschreiben? Das ist suggestiv, zeigt dem Benutzer jedoch keine bestimmte Antwort mit Schritten.