def _vCard_raw_to_contact(self, cardstring): card = vcard_from_string(cardstring) def _x(key): # Ugly parsing helper for ugly formats if key in card: try: return card[key][0][0] except IndexError: pass # Skip contact groups for now if _x('X-ADDRESSBOOKSERVER-KIND') == 'group': return None uid = _x('UID') name = _x('FN') email_address = _x('EMAIL') # TODO add these later # street_address = _x('ADR') # phone_number = _x('TEL') # organization = _x('ORG') return Contact(namespace_id=self.namespace_id, provider_name=self.PROVIDER_NAME, uid=uid, name=name, email_address=email_address, raw_data=cardstring)