-
Notifications
You must be signed in to change notification settings - Fork 0
/
contacts.py
95 lines (78 loc) · 2.53 KB
/
contacts.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import pandas as pd
import vobject
saved_cons = 'contacts.vcf'
saved_lst = []
xl_cons = 'Contacts.xlsx'
xl_lst = []
with open(saved_cons, 'r') as file:
# Loop through contacts in vcf file
for contact in vobject.readComponents(file.read()):
name = ' '.join([n.capitalize() for n in contact.fn.value.split()])
rel = ''
try:
rel = contact.org.value[0]
except:
pass
# Retrieve phone number
try:
phone = contact.tel.value.replace(' ', '').replace(')', '').replace('(', '').replace('+', '').replace('-', '')
# Remove country code if US
if phone.startswith('1') and len(phone) == 11:
phone = phone[1:]
saved_lst.append([name, phone, rel])
except:
pass
# Read contacts from Excel file
df = pd.read_excel(xl_cons).fillna('')
for row in df.iterrows():
val = row[1]
# Append contacts to list
xl_lst.append([val.Name, str(val.Phone), val.Relation])
# Remove old contacts from list
saved_lst = [x for x in saved_lst if x not in xl_lst]
# If no new contacts to add
if len(saved_lst) < 1:
print('No new contacts to add.')
exit()
# Create final contacts list
contacts = []
# Retrieve name only from saved list
saved_names = [x[0] for x in saved_lst]
# Retrieve phone only from saved list
saved_phones = [x[1] for x in saved_lst]
# Loop through xl list
for row in xl_lst:
# If contact is in saved list
if row[0] in saved_names:
# Find contact in saved list
for contact in saved_lst:
# If contact is found
if contact[0] == row[0]:
# Append contact to contacts
contacts.append(contact)
# Remove contact from saved list
saved_lst.remove(contact)
# If phone is in saved list
elif row[1] in saved_phones:
# Find contact in saved list
for contact in saved_lst:
# If contact is found
if contact[1] == row[1]:
# Append contact to contacts
contacts.append(contact)
# Remove contact from saved list
saved_lst.remove(contact)
else:
# Append contact to contacts
contacts.append(row)
# Loop through saved list
for contact in saved_lst:
# Append contact to new contacts
contacts.append(contact)
# Sort contacts by name
contacts = sorted(contacts)
# Print column headers
print('Name\tPhone\tRelation')
# Print saved list
for row in contacts:
print('\t'.join(row))