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.
Die Dateien, die Messages speichert, haben eine ichat
Dateierweiterung.
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 file
erneut 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.
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.
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.
Sean Moubry
.ichat
Dateien) sind keine SQLite-Datenbanken.