#!/usr/bin/env python import sys import subprocess import AddressBook as AB # get a reference to the address book book = AB.ABAddressBook.sharedAddressBook() # create search parameters - prefix match on first or last name or email firstname_search = AB.ABPersonCreateSearchElement( AB.kABLastNameProperty, None, None, sys.argv[1], AB.kABPrefixMatchCaseInsensitive) lastname_search = AB.ABPersonCreateSearchElement( AB.kABFirstNameProperty, None, None, sys.argv[1], AB.kABPrefixMatchCaseInsensitive) email_search = AB.ABPersonCreateSearchElement( AB.kABEmailProperty, None, None, sys.argv[1], AB.kABContainsSubStringCaseInsensitive) name_search = AB.ABSearchElement.searchElementForConjunction_children_( AB.kABSearchOr, [firstname_search, lastname_search, email_search]) # perform the search matches = book.recordsMatchingSearchElement_(name_search) # collect results results = [] for person in matches: emails = person.valueForKey_('Email') or [] company = person.valueForKey_('Organization')