from O365 import Account from O365.address_book import Contact client_id = '925f74dc-f96a-4718-9ca7-d6cc3fa43e1e' client_secret = 'SS~8Q~QpBZV9toZuwkzW1XGGen2Hn833spNMtdq5' account = Account( (client_id, client_secret), auth_flow_type='credentials', tenant_id='2ad0dff5-07ce-4cc2-a852-99ce8b91c218' ) mailboxes = [ 'bedner@global-cube.de', 'brandt@global-cube.de', # 'd.ankenbrand@global-cube.de', 'gawliczek@global-cube.de', 'm.geiss@global-cube.de', 'matarrelli@global-cube.de', 'winkler@global-cube.de', 'winter@global-cube.de' ] def copy_contact(p_from: Contact, p_to: Contact): p_to.display_name = p_from.display_name p_to.name = p_from.name p_to.surname = p_from.surname p_to.title = p_from.title p_to.job_title = p_from.job_title p_to.company_name = p_from.company_name p_to.department = p_from.department p_to.office_location = p_from.office_location p_to.business_phones = p_from.business_phones p_to.mobile_phone = p_from.mobile_phone p_to.home_phones = p_from.home_phones p_to._Contact__emails = p_from._Contact__emails p_to.business_address = p_from.business_address # p_to.home_address = p_from.home_address p_to.other_address = p_from.other_address p_to.categories = p_from.categories p_to.personal_notes = p_from.personal_notes p_to.save() def sync_contacts(): account.authenticate() shared = account.address_book(resource='adressbuch@global-cube.net', address_book='personal') shared_contacts = {p.display_name: p for p in shared.get_contacts(limit=None)} for mailbox in mailboxes: print(mailbox) personal = account.address_book(resource=mailbox, address_book='personal') personal_contacts = {p.display_name: p for p in personal.get_contacts(limit=None)} extra_contacts = set(personal_contacts.keys()).difference(shared_contacts.keys()) print(extra_contacts) # p.delete() for p in shared_contacts.values(): if p.display_name not in personal_contacts: p_new = personal.new_contact() copy_contact(p, p_new) else: p_existing = personal_contacts[p.display_name] if p.modified > p_existing.modified: copy_contact(p, p_existing) def delete_contacts(delete_candidates): account.authenticate() for mailbox in mailboxes: print(mailbox) personal = account.address_book(resource=mailbox, address_book='personal') personal_contacts = {p.display_name: p for p in personal.get_contacts(limit=None)} selected_contacts = set(delete_candidates).intersection(personal_contacts.keys()) print(selected_contacts) for c in selected_contacts: personal_contacts[c].delete() if __name__ == '__main__': # sync_contacts() delete_contacts(['Kia Kia Hotline', 'Marcel J.G. Kamps', 'Kevin Baumann (next motion)', 'Marius kling', 'Herr Haase', 'Birgit Dingfeldt']) # gal = account.directory() # mails = [p.mail for p in gal.get_users()] # print(mails)