Hatchbuck.com CRM API绑定用于Python
项目描述
此python包提供了一个易于使用的Python模块,用于与hatchbuck.com API交互。
安装
安装hatchbuck最简单的方法是使用pip
$ pip install hatchbuck
基本用法
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.search_email('bashar.said@vshn.ch')
pp.pprint(profile)
您可以在登录后,在 https://app.hatchbuck.com/account/setting#WebAPI 获取您的Hatchbuck API密钥
示例
搜索一个电子邮件地址
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.search_email('bashar.said@vshn.ch')
pp.pprint(profile)
输出
{'addresses': [{'city': 'Zürich',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'Q0NjajF2U1lTWnBHM1hjRFlnQzhzMHZ2UUxLY2d6a1JaU3Nicm5hRTN6azE1',
'state': 'ZH',
'street': 'Neugasse 10',
'type': 'Work',
'typeId': 'SjFENlU0Y2s2RDFpM0NKWEExRmVvSjZ4T3NJMG5pLWNYZjRseDBSaTVfVTE1',
'zip': '8005'}],
'campaigns': [],
'company': 'VSHN AG',
'contactId': 'SUFYbGdOaEQ0cWR2N1JfV183UFNBSDllTktCc3E3OWRsN09qaW4tU3JqbzE1',
'customFields': [{'name': 'Comments', 'type': 'MText', 'value': ''},
{'name': 'Invoiced', 'type': 'Number', 'value': ''},
{'name': 'Language', 'type': 'Text', 'value': ''},
{'name': 'working at company since',
'type': 'Text',
'value': '1.1.2018'},
{'name': 'company size', 'type': 'Text', 'value': '25'},
{'name': 'Birthday', 'type': 'Date', 'value': ''}],
'emails': [{'address': 'bashar.said@vshn.ch',
'id': 'S2lIY2NOS2dBRnRCamEyQUZxTG00dzhlYjAxUU9Sa3Z5ZFVENGVHTG1DODE1',
'type': 'Work',
'typeId': 'VmhlQU1pZVJSUFFJSjZfMHRmT1laUmwtT0FMNW9hbnBuZHd2Q1JTdE0tYzE1'}],
'firstName': 'Bashar',
'instantMessaging': [],
'lastName': 'Said',
'phones': [{'id': 'OHh4U0ZWc3FNVXVBQVF4cjdsak9McWc4TVppZlF4NklrNmZfSnBhaDZwQTE1',
'number': '+(414) 454-5 53 00',
'type': 'Work',
'typeId': 'QTBncHV0dndnaGNnRVMzLTR0SGtFRmRvZjdqNm4zcVphQi1XX1Z2MXVtRTE1'}],
'referredBy': '',
'salesRep': {'id': 'VGpwQTRGTmw4MExVODl1b1BmXzBodTBwWnZXS2dUZzVvSkJKZUx4UlFpdzE1',
'username': 'aarno.aukia'},
'socialNetworks': [{'address': 'https://twitter.com/bashar_2018',
'id': 'S1pEM2NMWlhmZ1VUcDhTUWVvQy1kU21xMjlSbDg5Z3piMERVbEFsam42azE1',
'type': 'Twitter',
'typeId': 'ZGRlMHpBaXY3M05YUGc4a0pIY3lRdUFKN1JYaDd2VEphbzhSRkdzM2x4bzE1'},
{'address': 'https://www.linkedin.com/in/bashar-said-729a54156/',
'id': 'Tzd0TTBueVQzS09JQVZTLUxiUUxUT25VMmVvT0dua2txc2NHZkNkNEg5VTE1',
'type': 'LinkedIn',
'typeId': 'Q2dJTVQ1NW9UYzhJeUd4ckI0dWFNWkpLOUxyTXVGUFVjQlZYbVM2ZlI4bzE1'}],
'source': {'id': 'MHZFdHZqcWVXT1IyNHZGYlM1RGppWVVJcGc3aHgtU3lXRWtfQmFXN0lCODE1',
'name': 'vshn.ch'},
'status': {'id': 'UE9zMy1abnhnNUJQWnVORE5BQzNicUFWQ3huLXF2eGlSdlIyYVFmVXh4UTE1',
'name': 'Employee'},
'subscribed': True,
'tags': [],
'temperature': {'id': 'UTI0Nm14TlB4SmRkdVNLMjNWQWgwR2R2TjhySE1US1RtVEQ0T24tRWtFbzE1',
'name': 'Hot'},
'timezone': 'W. Europe Standard Time',
'title': 'DevOps Engineer Intern',
'website': [{'id': 'bktodFBCalVCU2J6aFhjaXc5UVZkUHM5OHFnd0ZuQmdJTTU0cDRScm1KSTE1',
'websiteUrl': 'https://vshn.ch'}]}
搜索姓名和姓氏
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.search_name('bashar', 'said')
pp.pprint(profile)
输出
We get the same results When we search by email address because the firstname and lastname(bashar, said) belong to the same email address(bashar.said@vshn.ch)
在电子邮件地址列表中进行搜索
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.search_email_multi(['sgdhfgfdgh@fdvd.com', 'bashar.said@vshn.ch', ...])
pp.pprint(profile)
注意: 电子邮件必须是列表形式,并且搜索过程将在获得第一个匹配项时停止
输出
我们找到了一个包含该电子邮件地址的配置文件:'bashar.said@vshn.ch'
{'addresses': [{'city': 'Zürich',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'Q0NjajF2U1lTWnBHM1hjRFlnQzhzMHZ2UUxLY2d6a1JaU3Nicm5hRTN6azE1',
'state': 'ZH',
'street': 'Neugasse 10',
'type': 'Work',
'typeId': 'SjFENlU0Y2s2RDFpM0NKWEExRmVvSjZ4T3NJMG5pLWNYZjRseDBSaTVfVTE1',
'zip': '8005'}],
'campaigns': [],
'company': 'VSHN AG',
'contactId': 'SUFYbGdOaEQ0cWR2N1JfV183UFNBSDllTktCc3E3OWRsN09qaW4tU3JqbzE1',
'customFields': [{'name': 'Comments', 'type': 'MText', 'value': ''},
{'name': 'Invoiced', 'type': 'Number', 'value': ''},
{'name': 'Language', 'type': 'Text', 'value': ''},
{'name': 'working at company since',
'type': 'Text',
'value': '1.1.2018'},
{'name': 'company size', 'type': 'Text', 'value': '25'},
{'name': 'Birthday', 'type': 'Date', 'value': ''}],
'emails': [{'address': 'bashar.said@vshn.ch',
'id': 'S2lIY2NOS2dBRnRCamEyQUZxTG00dzhlYjAxUU9Sa3Z5ZFVENGVHTG1DODE1',
'type': 'Work',
'typeId': 'VmhlQU1pZVJSUFFJSjZfMHRmT1laUmwtT0FMNW9hbnBuZHd2Q1JTdE0tYzE1'}],
'firstName': 'Bashar',
'instantMessaging': [],
'lastName': 'Said',
'phones': [{'id': 'OHh4U0ZWc3FNVXVBQVF4cjdsak9McWc4TVppZlF4NklrNmZfSnBhaDZwQTE1',
'number': '+(414) 454-5 53 00',
'type': 'Work',
'typeId': 'QTBncHV0dndnaGNnRVMzLTR0SGtFRmRvZjdqNm4zcVphQi1XX1Z2MXVtRTE1'}],
'referredBy': '',
'salesRep': {'id': 'VGpwQTRGTmw4MExVODl1b1BmXzBodTBwWnZXS2dUZzVvSkJKZUx4UlFpdzE1',
'username': 'aarno.aukia'},
'socialNetworks': [{'address': 'https://twitter.com/bashar_2018',
'id': 'S1pEM2NMWlhmZ1VUcDhTUWVvQy1kU21xMjlSbDg5Z3piMERVbEFsam42azE1',
'type': 'Twitter',
'typeId': 'ZGRlMHpBaXY3M05YUGc4a0pIY3lRdUFKN1JYaDd2VEphbzhSRkdzM2x4bzE1'},
{'address': 'https://www.linkedin.com/in/bashar-said-729a54156/',
'id': 'Tzd0TTBueVQzS09JQVZTLUxiUUxUT25VMmVvT0dua2txc2NHZkNkNEg5VTE1',
'type': 'LinkedIn',
'typeId': 'Q2dJTVQ1NW9UYzhJeUd4ckI0dWFNWkpLOUxyTXVGUFVjQlZYbVM2ZlI4bzE1'}],
'source': {'id': 'MHZFdHZqcWVXT1IyNHZGYlM1RGppWVVJcGc3aHgtU3lXRWtfQmFXN0lCODE1',
'name': 'vshn.ch'},
'status': {'id': 'UE9zMy1abnhnNUJQWnVORE5BQzNicUFWQ3huLXF2eGlSdlIyYVFmVXh4UTE1',
'name': 'Employee'},
'subscribed': True,
'tags': [],
'temperature': {'id': 'UTI0Nm14TlB4SmRkdVNLMjNWQWgwR2R2TjhySE1US1RtVEQ0T24tRWtFbzE1',
'name': 'Hot'},
'timezone': 'W. Europe Standard Time',
'title': 'DevOps Engineer Intern',
'website': [{'id': 'bktodFBCalVCU2J6aFhjaXc5UVZkUHM5OHFnd0ZuQmdJTTU0cDRScm1KSTE1',
'websiteUrl': 'https://vshn.ch'}]}
我们没有找到包含电子邮件地址的配置文件:'sgdhfgfdgh@fdvd.com'
创建配置文件
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.create({
"firstName": "Hawar",
"lastName": "Afrin",
"title": "Hawar1",
"company": "HAWAR",
"emails": [
{
"address": "bashar.said.2018@gmail.com",
"type": "work",
}
],
"phones": [
{
"number": "0041 76 803 77 34",
"type": "work",
}
],
"status": {
"name": "Employee",
},
"temperature": {
"name": "Hot",
},
"addresses": [
{
"street": "Langäcker 12",
"city": "wettingen",
"state": "AG",
"zip": "5430",
"country": "Schweiz",
"type": "work",
}
],
"timezone": "W. Europe Standard Time",
"socialNetworks": [
{
"address": "'https://twitter.com/bashar_2018'",
"type": "Twitter",
}
],
})
pp.pprint(profile)
输出
{'addresses': [{'city': 'Wettingen',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'eDZNV2d4Q1ZIR09UN2p1UlhzclVCdTM0LU81UW5TZzZmU05vLUtuVzdoMDE1',
'state': '',
'street': 'Langäcker 13',
'type': 'Home',
'typeId': 'M1ZkLXI3UnJqUWxUVDNFZUZ3MW5MdG5KSGZuN0lVemNDcXNLdzgzbjBDVTE1',
'zip': '5430'},
{'city': 'Zürich',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'OEFPUzJBeTdaWlVhU3FDR194dEk3NU8xTThxakZuQXV4aE9obHM3SVdKTTE1',
'state': 'ZH',
'street': 'Neugasse 10',
'type': 'Work',
'typeId': 'SjFENlU0Y2s2RDFpM0NKWEExRmVvSjZ4T3NJMG5pLWNYZjRseDBSaTVfVTE1',
'zip': '8005'},
{'city': 'Wettingen',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'QnZnaFlQYlhnU0NZX0x6NHZMVTJoaU9HV1AzS0dybjdOd0JDc1AwVlVXMDE1',
'state': '',
'street': 'Langäcker',
'type': 'Home',
'typeId': 'M1ZkLXI3UnJqUWxUVDNFZUZ3MW5MdG5KSGZuN0lVemNDcXNLdzgzbjBDVTE1',
'zip': '5430'}],
'campaigns': [],
'contactId': 'TmpmT0QyUGE3UGdGejZMay1xbDNyUHJFWU91M2VwN0hCdGtZZFFCaWRZczE1',
'customFields': [{'name': 'Comments', 'type': 'MText', 'value': ''},
{'name': 'Invoiced', 'type': 'Number', 'value': ''},
{'name': 'Language', 'type': 'Text', 'value': ''},
{'name': 'working at company since',
'type': 'Text',
'value': ''},
{'name': 'company size', 'type': 'Text', 'value': ''},
{'name': 'Birthday', 'type': 'Date', 'value': '1/1/1984'}],
'emails': [{'address': 'bashar.said.2018@gmail.com',
'id': 'M2FaYWpqY1pBMldGeVpYYW11cXRpTUw2NndOcFJsUXIzZGI2VC1JRmdSYzE1',
'type': 'Work',
'typeId': 'VmhlQU1pZVJSUFFJSjZfMHRmT1laUmwtT0FMNW9hbnBuZHd2Q1JTdE0tYzE1'}],
'firstName': 'Hawar',
'instantMessaging': [],
'lastName': 'Afrin',
'phones': [{'id': 'MVhxaXBHdlRWOWdLX05FbHF6ZnczMERGVTMyWWRkZ0xsSFFQcXVNYW5NTTE1',
'number': '0041 76 803 77 34',
'type': 'Work',
'typeId': 'QTBncHV0dndnaGNnRVMzLTR0SGtFRmRvZjdqNm4zcVphQi1XX1Z2MXVtRTE1'}],
'referredBy': '',
'salesRep': {'id': 'VGpwQTRGTmw4MExVODl1b1BmXzBodTBwWnZXS2dUZzVvSkJKZUx4UlFpdzE1',
'username': 'aarno.aukia'},
'socialNetworks': [{'address': "'https://twitter.com/bashar_2018'",
'id': 'Y0c2YktIcG1kakt4RTJiRkh3NVVnYzNqejdkUkVrQVRkUE0tUVQ3TUpPdzE1',
'type': 'Twitter',
'typeId': 'ZGRlMHpBaXY3M05YUGc4a0pIY3lRdUFKN1JYaDd2VEphbzhSRkdzM2x4bzE1'}],
'status': {'id': 'UE9zMy1abnhnNUJQWnVORE5BQzNicUFWQ3huLXF2eGlSdlIyYVFmVXh4UTE1',
'name': 'Employee'},
'subscribed': True,
'tags': [{'id': 'Y0Y4VFRhbDZSZFl2eENuYWU4M2s4Q3FsNjExTk5ldjdVOFdWU29ZRy1UTTE1',
'name': 'new tag',
'score': 1}],
'temperature': {'id': 'UTI0Nm14TlB4SmRkdVNLMjNWQWgwR2R2TjhySE1US1RtVEQ0T24tRWtFbzE1',
'name': 'Hot'},
'timezone': 'W. Europe Standard Time',
'title': 'Hawar1',
'website': [{'id': 'MW5tUm5IcVVDYmhVZ0lSVndJenBxbDZra1ZwVEcxQXBVWDB6NkVCUWNRODE1',
'websiteUrl': 'http://002.powercoders.org/students/bashar-said/index.html'},
{'id': 'eG91X0tVcWU2a1A3dVg1b2JKQ1MyWGwzaGFjX1Q5RGRSNng3OE9XbGxBNDE1',
'websiteUrl': 'http://002.powercoders.org/students/alan-omar/index.html'}]}
配置文件已更新
例如,我们想更新上一个配置文件中的地址
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.update('TmpmT0QyUGE3UGdGejZMay1xbDNyUHJFWU91M2VwN0hCdGtZZFFCaWRZczE1', {
"firstName": "Hawar",
"lastName": "Afrin",
"title": "Hawar1",
"company": "HAWAR",
"emails": [
{
"address": "bashar.said.2018@gmail.com",
"type": "work",
}
],
"phones": [
{
"number": "0041 76 803 77 34",
"type": "work",
}
],
"status": {
"name": "Employee",
},
"temperature": {
"name": "Hot",
},
"addresses": [
{
"street": "Neugasse 10",
"city": "Zürich",
"state": "ZH",
"zip": "8005",
"country": "Switzerland",
"type": "work",
}
],
#"subscribed": true,
"timezone": "W. Europe Standard Time",
"socialNetworks": [
{
"address": "'https://twitter.com/bashar_2018'",
"type": "Twitter",
}
],
}
)
pp.pprint(profile)
输出
'addresses': [{'city': 'Zürich',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'OEFPUzJBeTdaWlVhU3FDR194dEk3NU8xTThxakZuQXV4aE9obHM3SVdKTTE1',
'state': 'ZH',
'street': 'Neugasse 10',
'type': 'Work',
'typeId': 'SjFENlU0Y2s2RDFpM0NKWEExRmVvSjZ4T3NJMG5pLWNYZjRseDBSaTVfVTE1',
'zip': '8005'}],
向配置文件添加地址
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.profile_add_address({
"contactId": "TmpmT0QyUGE3UGdGejZMay1xbDNyUHJFWU91M2VwN0hCdGtZZFFCaWRZczE1"},
{'street':"Langäcker 13",
'zip_code':"5430",
'city':"Wettingen",
'country':"Switzerland"},
"Home"
)
pp.pprint(profile)
输出
{'addresses': [{'city': 'Wettingen',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'eDZNV2d4Q1ZIR09UN2p1UlhzclVCdTM0LU81UW5TZzZmU05vLUtuVzdoMDE1',
'state': '',
'street': 'Langäcker 13',
'type': 'Home',
'typeId': 'M1ZkLXI3UnJqUWxUVDNFZUZ3MW5MdG5KSGZuN0lVemNDcXNLdzgzbjBDVTE1',
'zip': '5430'},
{'city': 'Zürich',
'country': 'Switzerland',
'countryId': 'QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1',
'id': 'OEFPUzJBeTdaWlVhU3FDR194dEk3NU8xTThxakZuQXV4aE9obHM3SVdKTTE1',
'state': 'ZH',
'street': 'Neugasse 10',
'type': 'Work',
'typeId': 'SjFENlU0Y2s2RDFpM0NKWEExRmVvSjZ4T3NJMG5pLWNYZjRseDBSaTVfVTE1',
'zip': '8005'}
配置文件包含
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.profile_contains({
"contactId": "QmJzeldzQ25rbXluZGc4RzlDYmFmYlZOY2xTemMwX2ZoMll5UTJPenhsNDE1",
"firstName": "Hawar",
"lastName": "Afrin",
"title": "Hawar1",
"company": "HAWAR",
"emails": [
{
"address": "bashar.said.2018@gmail.com",
"type": "work",
}
],
"addresses": [
{
"street": "Neugasse 10",
"city": "Zürich",
"state": "ZH",
"zip": "8005",
"country": "Switzerland",
"type": "work",
}
],
"phones": [
{
"number": "0041 76 803 77 34",
"type": "work",
}
]
}, "phones", "number", "0041 76 803 77 34")
pp.pprint(profile)
输出
2018-03-13 09:21:23,556 - root - DEBUG - loading config file: aarno.yaml
2018-03-13 09:21:23,559 - root - DEBUG - loaded config: {'app_key': ' ', 'app_secret': ' ',
'hatchbuck_key': ' ', 'hatchbuck_source_xing': ' ', 'hatchbuck_source_linkedin': ' ',
'hatchbuck_source_carddav': ' ', 'hatchbuck_tag_xing': 'Xing-aarno', 'hatchbuck_tag_linkedin': 'LinkedIn-aarno',
'hatchbuck_tag_carddav': 'Adressbuch-aarno', 'user_key': ' ', 'user_secret': ' ', 'carddav_path': 'carddav/360afdfd542ea44f/'}
True
添加配置文件
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.profile_add("emails", "address", "baschar.said@hotmail.com", {'type': 'Home'})
pp.pprint(profile)
输出
{'addresses': [],
'campaigns': [],
'contactId': 'cFk2SXB1emNXWFFuRGRPWnNCeGsyRUZ1NmxCeVdFZlJkV3lzdWVKN0dpZzE1',
'customFields': [{'name': 'Comments', 'type': 'MText', 'value': ''},
{'name': 'Invoiced', 'type': 'Number', 'value': ''},
{'name': 'Language', 'type': 'Text', 'value': ''},
{'name': 'working at company since',
'type': 'Text',
'value': ''},
{'name': 'company size', 'type': 'Text', 'value': ''},
{'name': 'Birthday', 'type': 'Date', 'value': ''}],
'emails': [{'address': 'baschar.said@hotmail.com',
'id': 'SVJhdUZDUjZNcllHYVRnZW5XWVZub1kzYmdIRTNkUmpwbUllYlJPNkxKazE1',
'type': 'Work',
'typeId': 'VmhlQU1pZVJSUFFJSjZfMHRmT1laUmwtT0FMNW9hbnBuZHd2Q1JTdE0tYzE1'}],
'firstName': '',
'instantMessaging': [],
'lastName': '',
'phones': [],
'referredBy': '',
'salesRep': {'id': 'VGpwQTRGTmw4MExVODl1b1BmXzBodTBwWnZXS2dUZzVvSkJKZUx4UlFpdzE1',
'username': 'aarno.aukia'},
'socialNetworks': [],
'status': {'id': 'UHQ4aTZUTXh2aDROQ0w0Z2dOSDlGM2ZkaXFRelhTLTJEVHNKWU02TXJ1bzE1',
'name': 'Customer Opportunity'},
'subscribed': True,
'tags': [],
'timezone': 'W. Europe Standard Time',
'website': []}
向配置文件添加生日
from hatchbuck import Hatchbuck
import pprint
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.profile_add_birthday({
"contactId": "TmpmT0QyUGE3UGdGejZMay1xbDNyUHJFWU91M2VwN0hCdGtZZFFCaWRZczE1"},
{'month': '1', 'day': '1', 'year': '1984'})
pp.pprint(profile)
输出
'customFields': [{'name': 'Comments', 'type': 'MText', 'value': ''},
{'name': 'Invoiced', 'type': 'Number', 'value': ''},
{'name': 'Language', 'type': 'Text', 'value': ''},
{'name': 'working at company since',
'type': 'Text',
'value': ''},
{'name': 'company size', 'type': 'Text', 'value': ''},
{'name': 'Birthday', 'type': 'Date', 'value': '1/1/1984'}],
国家查找
Hatchbuck在邮政地址中使用一个不太直观的国家ID,查找表在 https://app.hatchbuck.com/Account/APICountryKey_Json,并在此存储库中保存为hatchbuck_countries.json
电话号码清理
当从多个来源组合数据时,多个电话号码会累积在联系中,实际上是相同的号码,只是格式不同(国家,国际)并且格式不同(有空格,括号等,没有)。该模块包含一个清理和去重所有电话号码的方法
from hatchbuck import Hatchbuck
pp = pprint.PrettyPrinter()
hatchbuck = Hatchbuck('NINIGkhjhg348gssdh2uh2hf6gsjd...')
profile = hatchbuck.search_email('bashar.said@vshn.ch')
# contains both "+41445455300" and "0445455300" phone numbers,
# being the same number in international and national formats
profile = hatchbuck.clean_all_phone_numbers(profile)
# the redundant local number is removed and the international number is formatted as "+41 44 545 53 00"
项目详情
关闭
hatchbuck-1.0.23.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b1c43951b1ea1dbbfd7a337233f4b142adcb92f50ff1ae786cefbedfe002dee5 |
|
MD5 | 888c4b0c6b6aa2fae3927c28fabb5ff0 |
|
BLAKE2b-256 | 3d8cbb8302eba1bec82bdca63d03dc5b041e25713ec3a4b024a0ff2440e5e3e9 |