Категории публикаций
Подписка на рассылку по Email
новости (подписчиков: 3)
комментарии (подписчиков: 2)

Отменить подписку
Популярные публикации
Интересный опрос
Вы используете PHP?

Да, программирую на PHP.
Иногда использую, не часто.
Не использую язык PHP.
Поблагодарить автора
donate
1B4ZZ2PXUd9E7AqEB82AqFnkpk2bt5hQG7

Скрипт импорта контактов для телефонов Nokia 108, 220, 225

Размещено в категории: PHP

Neo using phone to call

Простой и универсальный способ импорта списка контактов в телефоны Nokia на платформе S30+ используя MS Excel (OpenOffice Spreadsheet) ипростой  скрипт на PHP.

Случилось так что телефоны на базе платформы S30+ не поддерживают Nokia PC Suite и другие менеджеры, благодаря которым можно полностью управлять содержимым своего телефона от Nokia.

Включаем смекалку, исследуем и добиваемся поставленной задачи!

Прогресс не стоит на месте и повсеместно используют смартфоны на 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 (Таблица).

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) - оставляем пустым.

Опции сохранения таблици в формате CSV

Сохраняем файл под именем 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
    http://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 генерирует карточку на основе указанного имени и номера телефона, корректно кодирует кириллические символы. Все сгенерированные функцией карточки сохраняем в один файл.

Как использовать скрипт:

  1. В папку со скриптом ложим наш файл phones.csv со списком контактов;
  2. Запускаем скрипт на выполнение;
  3. Скачиваем сгенерированный скриптом файл backup.dat (появится в папке со скриптом);
  4. Загружаем backup.dat на MicroSD карточку в телефоне, в папку Backup;
  5. Запускаем импорт контактов в телефоне.

Заключение

Весь комплект файлов с примерами всех документов можно скачать здесь: nokia-contacts-vcard-gen-php.zip (10Кб).

Используя знания из данной статьи можно написать похожие скрипты для импорта контактов в другие модели телефонов, которые используют для резервного копирования-восстановления формат vCard.

 (5/5) голосов: 3   просмотров: 1079


Тематика:  php  nokia  contacts  import  script

Комментарии к публикации (5)
Andrey 1 Andrey 
27 Июнь 2015 11:12

Есть способ проще, по крайней мере для Nokia 220

1. Синхронизовать контакты старого телефона с Nokia PC Suite
2. Экспортировать контакты из Nokia PC Suite в локальную папку. Для каждого выбранного контакта будет создан файл *.vcf
3. Подлючить Nokia 220 через USB в режиме накопителя
4. Скопировать созданную папку с контактами на карту памяти
5. В меню телефона перейти на карту памяти и для каждого файла из списка сделать Открыть -> Сохранить

0 
ph0en1x 2 ph0en1x 
27 Июнь 2015 16:22

Знаю о таком способе, хотя не всегда переливается корректно.
Суть же моей задачи была немного иная: возможность хранить список контактов на компьютере в формате таблички, там же можно быстро добавить/удалить/поправить контакты, а с помощью скрипта быстро импортировать эту таблицу в телефон. Править данные контактов в телефоне достаточно неудобно, к тому же телефон можно потерять, а резервный список контактов на компьютере останется .

+1 
Chipo 3 Chipo 
09 Ноябрь 2015 16:27

Полезная инфа. Жаль попалась после того как вопрос уже удалось решить.
Не проблема если контактов несколько... а вот если например их 800 было в старом и теперь их надо перенести в новый нок 220, по одному это становится невероятной проблемой.
Как решил:
слил со старого контакты, перенес на флешку, в андроид телефоне сделал импорт, синхронизировал телефоны по синему зубу. И самое интересное. На нок 220 заходим в контакты, нажимаем функции, скопир. конт., в самом низу - другое устройство, телефон... и контакты копируются из андроид устройства полностью списком.
п.с. полноценно скопировать список удалось только с самсунга на андроиде. Другие нокии, самсунги, на разных платформах либо копировали частично, либо не корректно.

+1 
Микас 4 Микас 
19 Декабрь 2015 23:13

Может кому пригодится. Nokia 130 и другие бюджетные телефоны на ОС s30+. Загрузка данных из гугл акка:

1. Экспортируем свою адресную книгу из гугл аккаунта в формате vdata (для iOS и пр.);
2. Переименовываем полученный файл в backup.dat;
3. Заливаем файл backup.dat в корень SD карты;
4. Заходим в Контакты - Настройки -Восстановить контакты.

И вуаля... Happy Все контакты восстановлены.

+2 
Andreika 5 Andreika 
05 Декабрь 2016 18:37

Хорошая статья.
Обновлю этот способ!
Вопрос стоял в том, чтоб занести в званилку 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. Востанавливем контакты с флешки в телефоне

Единственный минус этого метода - если в контакте более одного номера, после всех манипуляций, в телефоне будет отображаться только один номер, который шёл первым в коде контакта.
Так как мне контакты нужны были на короткий срок - этот недостаток смог пережить.

+1 

Добавить комментарий captcha