Импорт адресной книги в Mozilla Tunderbird из OutlookExpress

По работе часто приходится заниматься импортом в Mozilla Tunderbird из OutlookExpress. Если с импортом сообщений проблем не наблюдается, то с адресной книгой полная неразбериха – виной тому разные разделители используемые OutlookExpress (запятые), Tunderbird (точка с запятой) и разные наименования полей и их порядок.
До недавнего времени в связи с редкими операциями по импорту адресной книги из OutlookExpress  я решал эту проблему через текстовый редактор с помощью поиска-замены, но в данный момент мы переходим на Window7 c Windows XP, где как известно нет OutlookExpress, как стандартный почтовый клиент был выбран Mozilla Tunderbird и собственно появилось желание немного автоматизировать этот процесс с помощью скрипта на Python, т.к. мы активно его используем для написания скриптов. Возможно есть и другие решения, но мы о них не знаем (если Вы знаете о них, прошу оставлять комментарии).
Итак, поехали:)
1. Заходим в адресную книгу Outlook
Адресная книга OutlookExpress2. Экспортируем выбранную книгу (Файл -> Экспорт -> Другая адресная книга -> Текстовый файл с разделителями-запятыми)
Экспорт адресной книги из OutlookExpress 
Экспорт адресной книги из OutlookExpress CVS
Жмем “Экспорт” и выбираем путь сохранения файла
Указываем путь сохранения книгиЖмем “Далее”
Выбор полейОБЯЗАТЕЛЬНО ОТМЕЧАЕМ ВСЕ ПОЛЯ!
Жмем “Готово”
Скачиваем скрипт, распаковываем и запускаем его передав первым аргументом полный путь до файла который мы экспортировали, в нашем примере он указан как C:AdressBookAB.csv
Работа скрипта для конвертации адресной книги из OutlookExpress в Mozilla ThuderbirdВ директории с адресной книгой появился новый файл AB_new.csv, его мы импортируем в Thunderbird!
AB_new.csv
В Mozilla Thunderbird жмем в меню “Инструменты>Импорт”
Импорт адресной книги в MozillaThuderbird 1Выбираем “Адресные книги”
Импорт адресной книги в MozillaThuderbird 2В появившемся окне выбираем “Текст. файл (LDIF, .tab, .csv, .txt)”, жмем “Далее”
Импорт адресной книги в MozillaThuderbird 3
Указываем путь до нашего файла созданным с помощью скрипта, указав в диалоговом окне тип файла – все файлы (т.к. по умолчанию выбирается LDIF), выбрав – жмем “Открыть”
Импорт адресной книги в MozillaThuderbird 4В следующем окне отмечаем чекбоксы так же, как указано на скриншоте (можно указать только те поля которые Вам нужны, ну или все)
Импорт адресной книги в MozillaThuderbird 5
Нажимаем “OK” и видим следующее окно с сообщением об успешном импорте 
Импорт адресной книги в MozillaThuderbird 5
Жмем “Готово”, заходим в адресную книгу MozillaThuderbird, у нас появилась новая книга с названием взятым от имени файла импорта AB_new, возможно в начале она будет пустая, просто пощелкайте «туда-сюда» и она обновится, ну или закройте-откройте программу
Импорт адресной книги в MozillaThuderbird 6

Ниже публикую сам скрипт convertingAddressBook

# coding=utf-8
from os import path
import sys

outlook = {'sequence':
	           ['firstName', 'lastName', 'middleName', 'displayName', 'alias', 'email', 'streetHome', 'cityHome',
	            'zipHome', 'regionHome', 'countryHome', 'phoneHome', 'faxHome', 'mobileHome', 'pageHome', 'streetBusiness',
	            'cityBusiness', 'zipBusiness', 'regionBusiness', 'countryBusiness', 'pageBusiness', 'phoneBusiness',
	            'faxBusiness', 'pager', 'organization', 'function', 'department', 'room', 'notes'],
           'delimiter':';'}

thunderbird = {'sequence':
	               ['firstName', 'lastName', 'displayName', 'alias', 'email', 'emailAlt', 'internetPager', 'phoneBusiness',
	                'phoneHome', 'faxHome', 'pager', 'mobileHome', 'streetHome', 'streetHomeAlt', 'cityHome', 'regionHome',
	                'zipHome', 'countryHome', 'streetBusiness', 'streetBusinessAlt', 'cityBusiness', 'regionBusiness',
	                'zipBusiness', 'countryBusiness', 'function', 'department', 'organization', 'pageBusiness', 'pageBusinessAlt',
	                'yearBirth', 'monthBirth', 'dayBirth', 'other', 'otherAlt1', 'otherAlt2', 'otherAlt3', 'notes'],
               'delimiter':','}

def conversion(fileIN, fileOUT, impFrom=outlook, impTo=thunderbird):
	match = set(impFrom['sequence']) & set(impTo['sequence'])
	for record in fileIN.readlines():
		result=str()
		record = record.strip().split(impFrom['delimiter'])
		record = {key:value for key, value in zip(impFrom['sequence'], record)}
		for key in impTo['sequence']:
			if key in match:
				result += record.get(key, '')
			result += impTo['delimiter']
		print('.', sep='', end='')
		fileOUT.write('{}n'.format(result))
	fileOUT.close()

if __name__ == '__main__':
	flag = True
	if len(sys.argv) >= 3:
		pathIN, pathOUT = sys.argv[1:3]
	elif len(sys.argv) == 2:
		pathIN =  sys.argv[1]
		pathOUT = '_new'.join(path.splitext(pathIN))
	else:
		flag = False
	if flag:
		fileIN = open(pathIN, 'r')
		if pathOUT:
			fileOUT = open(pathOUT, 'w')
		else:
			pathOUT = '_new'.join(path.splitext(pathIN))
			fileOUT = open(pathOUT, 'w')
		print('Converting', sep='', end='')
		conversion(fileIN, fileOUT)
		print('OK', sep='', end='n')
	input('Press ENTER')

Cкрипт должен работать в версии Python 3.X работа во второй ветке Python не проверялась.
Собственно все:)

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
2 Комментарий
Oldest
Newest Most Voted
Встроенные отзывы
Просмотр всех комментариев
Роман
Роман
3 лет назад

Ваш скрипт хотел попробовать,распаковал,а там один файл с информацией о коде.Что дальше делать?Если можно,подетальнее,я не силен в программировании

Vladimir
Администратор
3 лет назад
Ответить на  Роман

Установить Python3, обработать скриптом файл экспорта, согласно описанию в статье.
Программировать не надо.