Eine sehr einfache Möglichkeit zu verstehen, was eine Datenbankdatei ist, besteht darin, sich einen Ordner vorzustellen, der eine Reihe von Excel-ähnlichen Tabellen enthält. Ähnlich wie bei größeren oder unternehmensweiten Datenbanken können Sie die Daten in der Datenbank auf verschiedene Arten verbinden und darauf zugreifen.

Mit Python und Pandas

In diesem Tutorial verwende ich Python und das erstaunliche Pandas-Modul, um eine Verbindung zur Datenbank herzustellen, die darin enthaltenen Tabellen und Daten zu untersuchen und diese Daten dann aus den entsprechenden Tabellen zu lesen.,

Oben stellen wir eine Verbindung zur Datenbank her und untersuchen, welche Tabellen sich dort befinden. Ich habe festgestellt, dass sich in der Datenbank einige Tabellen befinden, darunter eine mit dem Namen message und andere mit den Namen chat, Handle und Attachment. Lassen Sie uns die Nachrichtentabelle erkunden, denn das ist derjenige, der am vielversprechendsten klingt unsere iMessages zu halten. Dazu übertrage ich die Tabelle in einen Pandas-Datenrahmen, einen Dateityp, der für Datenanalyseprojekte viel einfacher zu untersuchen und zu bearbeiten ist.

# get the 10 entries of the message table using pandas
messages = pd.read_sql_query("select * from message limit 10", conn)

Nachrichtentext und Telefonnummer abrufen

Wir treffen Bingo!, Die Nachrichtentabelle scheint tatsächlich alle gespeicherten iMessages zu enthalten. Es verfügt über ein Textfeld mit der tatsächlich gesendeten oder empfangenen Nachricht, ein Datumsfeld (mehr dazu unten) und eine Handle-ID. Nach ein wenig Recherche stellte ich fest, dass die handle_id ein Code für jede Telefonnummer oder Apple-ID ist, mit der Sie ein Gespräch geführt haben. Um die handle_id wieder der Apple-ID zuzuordnen, können wir eine Tabelle in der Datenbank (entsprechend) mit dem Namen handle und join auf handle_id.

Hinzufügen einer Chat-ID

In ähnlicher Weise enthält die Nachrichtentabelle auch eine chat_id, die jede Nachricht einem eindeutigen Chat zuordnet., Dies kann nützlich sein, wenn Analysen zu Chats mit mehreren Personen durchgeführt werden. Wir können die chat_id jeder Nachricht abrufen, indem wir die Nachrichtentabelle mit der (wiederum entsprechend benannten) chat_message_join-Tabelle in message_id verbinden.

Abrufen des Datums

Die Nachrichtentabelle enthält auch eine Datumsspalte, und die Dekodierung war für mich etwas schwierig, da sie in keinem in der Branche weit verbreiteten Format vorliegt. Darüber hinaus unterscheidet sich die Art und Weise, wie diese Spalte aufgezeichnet wird, in neueren Versionen von Mac OS X etwas von älteren.,

Gutschrift für diese Stackoverflow-Seite, die mir geholfen hat, dies herauszufinden.

In Mac OS X-Versionen vor High Sierra (Version 10.13 und veröffentlicht im September 2017) ist die Datumsspalte ein Epochentyp, aber im Gegensatz zum Standard zum Zählen der Sekunden von 1970-01-01 zählt sie die Sekunden von 2001-01-01., Um diesen Typ in ein Datenfeld umzuwandeln, das wir tatsächlich verstehen können, können wir einen Befehl verwenden, während wir die Nachrichtentabelle abfragen, um ein neues Feld zu erstellen (wir nennen es date_utc, da es als Ergebnis ein UTC-Zeitzonendatum angibt) basierend auf dem Datumsfeld.

In Mac OS X High Sierra und höher ist es dasselbe, aber das Datumsformat ist jetzt viel körniger: Es befindet sich in Nano-Second-Ebene. Jetzt müssen wir also durch 1,000,000,000 bevor wir dasselbe Code-Snippet anwenden, das wir oben angewendet haben.,

Alles zusammensetzen

Hier finden Sie das Notebook mit dem gesamten Code, damit Sie Ihre iMessages von Ihrem Laptop extrahieren und mit der Analyse beginnen können!

Es sollte nur wenige Minuten dauern und am Ende sollten Sie einen grundlegenden Verlauf Ihrer iMessage-Daten haben, der die Telefonnummer (oder E-Mail), den Text, einen eindeutigen Chat für jede eindeutige Gruppe von Personen, mit denen Sie gesprochen haben, und den Zeitstempel (in UTC-Zeitzone) jeder gesendeten Nachricht enthält.

Sie können tatsächlich mehr Daten in der Datenbank finden, z. B. Details, ob die Nachricht zugestellt und gelesen wurde, sowie Anhänge., Ich berühre diese Attribute in diesem Beitrag nicht.

Articles

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.