osx/addressbook/export_to_alias.py
| changeset 20: |
b6b0e9bc226d |
| parent: | 7208db06a898 |
| author: |
Greg Darke <greg+laptop@tsukasa.net.au> |
| date: |
Thu Apr 16 00:45:45 2009 +1000 (15 months ago) |
| permissions: |
-rwxr-xr-x |
| description: |
Ignore some stuff |
2# Copyright 2009 Greg Darke <greg+laptop@tsukasa.net.au> 3# Licensed for distribution under the GPL version 2, check COPYING for details 6reload(sys).setdefaultencoding('utf8') # Hacky 9logging.basicConfig(level=logging.DEBUG) 16 print >>sys.stderr, 'Seems you do not have pyobjc working for this version of python' 21 return ''.join([c for c in s if c in string.lowercase]) 28def getDisplayName(person): 29 firstName = unicode(person.valueForProperty_(AddressBook.kABFirstNameProperty)) 30 lastName = unicode(person.valueForProperty_(AddressBook.kABLastNameProperty)) 31 companyName = unicode(person.valueForProperty_(AddressBook.kABOrganizationProperty)) 33 flags = person.valueForProperty_(AddressBook.kABPersonFlags) 36 lastNameFirst = (flags & AddressBook.kABNameOrderingMask) == AddressBook.kABLastNameFirst 38 if (flags & AddressBook.kABShowAsMask) == AddressBook.kABShowAsCompany: 42 if lastName and firstName: 44 return '%s %s' % (lastName, firstName, ) 46 return '%s %s' % (firstName, lastName, ) 52def processPerson(fd, person): 53 logger = logging.getLogger('main.processPerson') 54 emailAddresses = person.valueForProperty_(AddressBook.kABEmailProperty) 56 if not emailAddresses: 60 # Assume first name exists 61 personName = getDisplayName(person) 62 addIfSane(personName, aliasNames) 64 if person.valueForProperty_(AddressBook.kABNicknameProperty): 65 addIfSane(unicode(person.valueForProperty_(AddressBook.kABNicknameProperty)), aliasNames) 67 defaultIdentifier = emailAddresses.primaryIdentifier() 69 (emailAddresses.identifierAtIndex_(i)==defaultIdentifier and -1 or 0, emailAddresses.valueAtIndex_(i)) 70 for i in xrange(emailAddresses.count()) 74 for aliasName in aliasNames: 75 for i, (isDefault, emailAddress) in enumerate(emailAddresses): 76 emailAddress = email.utils.formataddr( (personName, emailAddress) ) 79 print >>fd, 'alias %s%d %s' % (aliasName, i, emailAddress) 81 print >>fd, 'alias %s %s' % (aliasName, emailAddress) 83def processGroup(fd, group): 85 for member in group.members(): 86 displayName = getDisplayName(member) 87 emailAddresses = member.valueForProperty_(AddressBook.kABEmailProperty) 88 if not emailAddresses: 90 emailAddress = emailAddresses.valueForIdentifier_(emailAddresses.primaryIdentifier()) 91 members.append(email.utils.formataddr( (getDisplayName(member), emailAddress))) 92 listName = group.valueForProperty_(AddressBook.kABGroupNameProperty) 93 listName = makeSaneString(listName) 95 print >>fd, 'alias %s %s' % (listName, ', '.join(members)) 98 book = AddressBook.ABAddressBook.sharedAddressBook() 100 print >>sys.stdout, '# People' 101 for person in book.people(): 102 processPerson(sys.stdout, person) 104 print >>sys.stdout, '# Groups' 105 for group in book.groups(): 106 processGroup(sys.stdout, group) 108if __name__ == "__main__":