Скрипт импорта контактов для телефонов Nokia 108, 220, 225
Простой и универсальный способ импорта списка контактов в телефоны Nokia на платформе S30+ используя MS Excel (OpenOffice Spreadsheet) ипростой скрипт на PHP.
Случилось так что телефоны на базе платформы S30+ не поддерживают Nokia PC Suite и другие менеджеры, благодаря которым можно полностью управлять содержимым своего телефона от Nokia.
Включаем смекалку, исследуем и добиваемся поставленной задачи!
Содержание:
- Предисловие
- Принцип импорта контактов
- Формат vCard
- Подготовка списка контактов
- PHP скрипт генерации файла vCard
- Заключение
Предисловие
Прогресс не стоит на месте и повсеместно используют смартфоны на Android, в которых подобных проблем нет, поскольку программного обеспечения для таких смартфонов есть масса и на любой вкус.
Но в то же время не всем нужен мощный смартфон, особенно если предполагается использовать устройство преимущественно для звонков. В сегменте простых телефонов-звонилок бренд Nokia уже давно зарекомендовал себя как один из лидеров. Данные телефоны просты в использовании, надежно собраны и имеют некоторые простые но приятные плюшки типа: фонарик, FM-радио и другие.
После покупки компании гигантом Майкрософт, программное обеспечение телефонов Nokia очень изменилось, и в некоторых случаях принесло некоторые неудобства и недовольство со стороны пользователей. Привыкать к чему-то новому не всегда может оказаться простым процессом, к тому же не все новое бывает лучше сделано чем старое.
Данная статья поможет вам импортировать ваш список контактов из таблички MS Excel или OpenOffice Spreadsheet в ваш телефон буквально в несколько шагов. О том как перевести ваши контакты из Outlook Express, Gmail и других программ и сервисов в таблицу MS Excel я рассказывать не буду, думаю сами разберетесь.
Метод подходит для импорта контактов в телефоны Nokia 108, 220, 225. Также подобный подход можно применить и для других моделей телефонов.
Принцип импорта контактов
В телефонах Nokia на платформе S30+ можно сделать резервную копию контактов и настроек. Для этого есть отдельный пункт в меню Настройки(Settings), который зовется "Резервное копирование"(Backup) или же как-то по другому в зависимости от марки телефона и используемого языка меню. Если такого пункта нет то скорее всего похожая опция присутствует в списке ваших контактов, в настройках или опциях(Settings) для списка контактов.
Чтобы иметь возможность делать резервную копию в телефон нужно установить карту памяти MicroSD, на ней будет создана папка Backup, а в ней после резервного копирования появится файлик под именем: backup.dat .
Если открыть данный файл то в нем обнаружим записи наподобие тех что отображены ниже:
BEGIN:VCARD
VERSION:2.1
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;Morpheus;;;
TEL;VOICE;CELL:+998777711110
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;Trinity;;;
TEL;VOICE;CELL:+998777711100
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;Mr. Smith;;;
TEL;VOICE;CELL:+991000010000
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;=D0=9C=D0=BE=D0=B4=D0=B5=D0=BC DSM2K;;;
TEL;VOICE;CELL:+991010101010
END:VCARD
Как видим, здесь четыре записи с похожим шаблоном, количество таких записей равно количеству контактов в нашем телефоне.
Подобный файл можно составить самому, загрузить его на место файла backup.dat , что на карточке MicroSD, и потом в телефоне сделать восстановление контактов из резервной копии.
Остается разобраться что это за формат и как нам сделать генерацию файла со всеми контактами в таком формате.
Формат vCard
VCard - это формат разработанный для обмена электронными визитными карточками в текстовом формате. Данный формат подробно описан в Википедии, нам же нужно знать всего малость из его структуры.
Рассмотрим то что нагенерировал нам телефон, построчно:
BEGIN:VCARD - начало карточки
VERSION:2.1 - указывается используемая версия спецификации vCard.
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;Trinity;;; - содержит Имя, N(Name). Сначала указаны особенности использования кодировки (метод quoted-printable), кодировку символов(UTF-8, юникод) и в конце само имя - Trinity. Обратите внимание на разделители ";", каждое поле ключ-значение использует разделитель, в конце должно присутствовать такое же количество закрывающих разделителей.
TEL;VOICE;CELL:+998777711100 - указан телефонный номер для всех типов дозвона.
END:VCARD - конец карточки.
Для составления файла с контактами нужно генерировать для каждого контакта вот такую запись(карточку), изменив имя и телефон (Trinity, +998777711100).
Но есть особенность для использования кириллических символов. Как вы заметили в примере выше присутствует строка:
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;=D0=9C=D0=BE=D0=B4=D0=B5=D0=BC DSM2K;;;
Здесь вместо имени набор символов: =D0=9C=D0=BE=D0=B4=D0=B5=D0=BC DSM2K .
Это закодированная запись "Модем DSM2K" с использованием метода quoted-printable в кодировке UTF-8. Кириллические символы были закодированы, а символы латиници остались как есть.
Подготовка списка контактов
Первым делом нужно собрать все контакты и сохранить их в удобном формате. Для работы будем использовать OpenOffice Spreadsheet (аналог MS Excel для работы с таблицами). Расскажу подробно и с рисунками, как для новичков.
Скачать пакет OpenOffice можно на официальном сайте, а также можно использовать портабельную версию без установки - качаем с сайта PortableApps OpenOffice Portable (~100Mb). Также можно использовать свободный пакет LibreOffice.
Запускаем OpenOffice, из меню приложений выбираем Spreadsheet (Таблица).
В первой колонке будем писать имя контакта, а во второй полный номер телефона, вот пример заполнения:
Готово? - Отлично! Сохраняем себе этот список в надежное место на компьютере, возможно еще когда-то пригодится, лишняя резервная копия не помешает.
Для удобства работы с данными нужно переконвертировать список в текстовый формат с разделителями - CSV(COmma Separated Values). Для этого идем в Файл(File) - Сохранить как(Save As). В списке где Тип файла(File type) выбираем Text CSV(.csv) и сохраняем.
ОпенОффис выдаст запрос о текущем формате документа - жмем Использовать текущий формат(Keep Current Format).
В диалоговом меню Экспорт текстовых файлов (Export of text files), которое появится, выбираем:
- кодировку (Character set) - Cyrillic (Windows-1251);
- разделитель полей (Field delimiter) - символ ";" (точка с запятой);
- Разделитель текста (Text delimiter) - оставляем пустым.
Сохраняем файл под именем phones.csv, вот в каком формате он получится:
Name;Phone
Morpheus;+998777711110
Trinity ;+998777711100
Mr. Smith ;+991000010000
Модем DSM2K;+991010101010
Теперь осталось написать скрипт, который из подобного формата будет генерировать файл резервной копии с записями в формате vCard.
PHP скрипт генерации файла vCard
Для запуска скрипта на языке PHP можно использовать локальный веб-сервер (Denwer, OpenServer) или же сервер на любом хостинге где установлен интерпретатор PHP. А можно скачать только сам PHP под Windows вот тут.
Вот исходный код скрипта:
/*------------------------------------
CSV to vCard Contacts Converter
for Nokia 108, 220, 225
https://ph0en1x.net
--------------------------------------*/
// specify path to CSV phones book,
// in CP1251 encoding, splitter - ";"
$file = 'phones.csv';
// Generating simple vCard record for
// Nokia 108, 220, 225 phones based on S30+ platform
function Nokia_vCard_Gen($name = '', $phone = '') {
if(strlen($name)>16) {
echo "WARNING: [".$name."] (".strlen($name).")".
" will be truncated to 16 symbols.\r\n";
$name = substr($name, 0, 16);
}
$name = iconv("windows-1251", "utf-8", $name);
$vCard = "BEGIN:VCARD\r\nVERSION:2.1\r\n";
$vCard .= "N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;".
quoted_printable_encode($name).";;;\r\n";
$vCard .= "TEL;VOICE;CELL:".$phone."\r\n";
$vCard .= "END:VCARD\r\n";
return $vCard;
}
$csv_file = file_get_contents($file);
$vCard = '';
$contacts_count = 0;
$csv_ex = explode("\r\n", $csv_file);
foreach($csv_ex as $line) {
$line_ex = explode(";", $line);
if(isset($line_ex[0]) && $line_ex[0]=='Phone') // Skip CSV header
continue;
if(isset($line_ex[0]) && $line_ex[0]!='' && isset($line_ex[1]) && $line_ex[1]!='') {
$vCard . = Nokia_vCard_Gen( trim($line_ex[0]), trim($line_ex[1]) );
$contacts_count++;
}
}
file_put_contents('backup.dat', $vCard);
echo 'Done. Contacts in backup: ' . $contacts_count . "
";
echo '<a' . ' href="backup.dat" download>Download backup.dat</' . 'a>';
Вот что делает скрипт. Считываем файл CSV и разбиваем его содержимое на строчки. Каждая строчка - это уже готовые данные для карточки, нужно только разбить ее используя разделитель ";". На основе полученных имени и номера телефона, для каждой строки в файле CSV генерируем карточку, используя функцию Nokia_vCard_Gen. Функция Nokia_vCard_Gen генерирует карточку на основе указанного имени и номера телефона, корректно кодирует кириллические символы. Все сгенерированные функцией карточки сохраняем в один файл.
Как использовать скрипт:
- В папку со скриптом ложим наш файл phones.csv со списком контактов;
- Запускаем скрипт на выполнение;
- Скачиваем сгенерированный скриптом файл backup.dat (появится в папке со скриптом);
- Загружаем backup.dat на MicroSD карточку в телефоне, в папку Backup;
- Запускаем импорт контактов в телефоне.
Заключение
Весь комплект файлов с примерами всех документов можно скачать здесь: nokia-contacts-vcard-gen-php.zip (10Кб).
Используя знания из данной статьи можно написать похожие скрипты для импорта контактов в другие модели телефонов, которые используют для резервного копирования-восстановления формат vCard.
Есть способ проще, по крайней мере для Nokia 220
1. Синхронизовать контакты старого телефона с Nokia PC Suite
2. Экспортировать контакты из Nokia PC Suite в локальную папку. Для каждого выбранного контакта будет создан файл *.vcf
3. Подлючить Nokia 220 через USB в режиме накопителя
4. Скопировать созданную папку с контактами на карту памяти
5. В меню телефона перейти на карту памяти и для каждого файла из списка сделать Открыть -> Сохранить
Знаю о таком способе, хотя не всегда переливается корректно.
.
Суть же моей задачи была немного иная: возможность хранить список контактов на компьютере в формате таблички, там же можно быстро добавить/удалить/поправить контакты, а с помощью скрипта быстро импортировать эту таблицу в телефон. Править данные контактов в телефоне достаточно неудобно, к тому же телефон можно потерять, а резервный список контактов на компьютере останется
Полезная инфа. Жаль попалась после того как вопрос уже удалось решить.
Не проблема если контактов несколько... а вот если например их 800 было в старом и теперь их надо перенести в новый нок 220, по одному это становится невероятной проблемой.
Как решил:
слил со старого контакты, перенес на флешку, в андроид телефоне сделал импорт, синхронизировал телефоны по синему зубу. И самое интересное. На нок 220 заходим в контакты, нажимаем функции, скопир. конт., в самом низу - другое устройство, телефон... и контакты копируются из андроид устройства полностью списком.
п.с. полноценно скопировать список удалось только с самсунга на андроиде. Другие нокии, самсунги, на разных платформах либо копировали частично, либо не корректно.
Может кому пригодится. Nokia 130 и другие бюджетные телефоны на ОС s30+. Загрузка данных из гугл акка:
1. Экспортируем свою адресную книгу из гугл аккаунта в формате vdata (для iOS и пр.);
2. Переименовываем полученный файл в backup.dat;
3. Заливаем файл backup.dat в корень SD карты;
4. Заходим в Контакты - Настройки -Восстановить контакты.
И вуаля... Happy Все контакты восстановлены.
Хорошая статья.
Обновлю этот способ!
Вопрос стоял в том, чтоб занести в званилку Nokia 108 все мои контакты с Google. По причине того, что мой айфон ушёл в сервис по гарантии. Все свои контакты я уже много лет храню в гугле. Там естественно, возможности контакта большие (несколько номеров, разные типы, фотки и так далее). В нокии используется самый простой формат, тобиж, один номер одного типа, и к тому же с кириллицей проблема(как описано в этой статье - нужно перекодировать). Так как, звонилка у меня на время, контакты нужны на короткий срок. Решено было, не заморачиваться, а максимально быстро всё оформит.
Вот самый просто и быстрый способ получить почти все контакты в телефне.
1. Экспортируем с google все контакты в vcard.
2. Открываем файл в редакторе типа Notepad++
3. Копируем весь код в буфер и переносим в сервис транслита, типа www.translit.ru. Конвертируем. В итоге мы имеем все русские контакты на транслите. Этим мы упрощаем нам работу.
4. Заменяем оригинальный код на транслит в NotePad++
5. Телефон не понимает разные типы номеров(типа Домашний, Рабочий и так далее). Для него есть только один тип "CELL". Все контакты которые имеют другой тип, в телефоне не будут отображаться. Сам контакт будет, но номера в нем не будет. Поэтому, нужно заменить все типы на CELL. Пользуемся встроенным инструментом замены в Notepad++. Заменяем все типы на CELL. Можно быстренько пробежаться по коду и прикинуть, какие там у вас типы используются. И заменить их. У меня были в основном HOME и WORK.
6. Сохраняем на флушку в файл backup.dat
7. Востанавливем контакты с флешки в телефоне
Единственный минус этого метода - если в контакте более одного номера, после всех манипуляций, в телефоне будет отображаться только один номер, который шёл первым в коде контакта.
Так как мне контакты нужны были на короткий срок - этот недостаток смог пережить.
Есть вариант намного проще, испробован на Nokia 230 для того что б на нее скопировать контакты заходим параметры/контакты/перенести контакты, делаем сопряжение с телефоном с которого вытягиваем контакты, готово!