lib/chronicle/imessage/imessage_extractor.rb in chronicle-imessage-0.2.0 vs lib/chronicle/imessage/imessage_extractor.rb in chronicle-imessage-0.2.1
- old
+ new
@@ -11,20 +11,27 @@
end
setting :db, default: File.join(Dir.home, 'Library', 'Messages', 'chat.db'), required: true
setting :load_attachments, default: false
setting :only_attachments, default: false
+ setting :my_phone_number
+ setting :my_name
+ setting :icloud_account_id
+ setting :icloud_account_dsid
+ setting :icloud_account_display_name
def prepare
prepare_data
end
def extract
@messages.each do |message|
meta = {}
meta[:participants] = @chats[message['chat_id']]
meta[:attachments] = @attachments[message['message_id']] if @attachments
+ meta[:my_phone_contact] = @my_phone_contact
+ meta[:my_icloud_account] = @my_icloud_account
yield Chronicle::ETL::Extraction.new(data: message, meta: meta)
end
end
@@ -35,15 +42,33 @@
private
def prepare_data
@db = SQLite3::Database.new(@config.db, results_as_hash: true)
@messages = load_messages
- @contacts = LocalContacts.new.contacts
@chats = load_chats
+ @local_contacts = LocalContacts.new
+ @my_phone_contact = load_my_phone_contact(@local_contacts)
+ @my_icloud_account = load_my_icloud_account(@local_contacts)
+
if @config.load_attachments
@attachments = load_attachments(@messages.map{|m| m['message_id']})
end
+ end
+
+ def load_my_phone_contact(local_contacts)
+ {
+ phone_number: @config.my_phone_number || local_contacts.my_phone_contact.fetch(:phone_number),
+ name: @config.my_name || local_contacts.my_phone_contact.fetch(:full_name)
+ }
+ end
+
+ def load_my_icloud_account(local_contacts)
+ {
+ id: @config.icloud_account_id || local_contacts.my_icloud_account.fetch(:AccountID),
+ dsid: @config.icloud_account_dsid || local_contacts.my_icloud_account.fetch(:AccountDSID),
+ display_name: @config.icloud_account_display_name || @config.my_name || local_contacts.my_icloud_account.fetch(:DisplayName)
+ }
end
def load_messages
conditions = []