вторник, 5 июля 2011 г.

VCF. Объединение контактов.

Когда-то давно-давно (году в 2006-7) я регулярно делал бэкап контактов из телефона. Тогда у меня был еще какой-то старенький Nokia. Каждый контакт хранился в отдельном VCF файле. Может быть и до сих пор Нокиа так хранит контакты. Так у меня и валялась эта папка лет 5, пока не стало лень и я не решил засунуть всё это в Google Contacts. Не найдя, как сделать импорт из нескольких файлов, пришлось написать маленький скриптик для объединения всех контактов в один VCF-файл.
<?php
define('INPUT_DIR', 'input');
define('OUTPUT_DIR', 'output');
define('OUTPUT_FILENAME', 'contacts.vcf');

$outputFileName = OUTPUT_DIR . DIRECTORY_SEPARATOR . OUTPUT_FILENAME;
$directoryIterator = new DirectoryIterator(INPUT_DIR);

foreach ($directoryIterator as $item) {
    if ($item->isFile()) {
        $extension = substr(strrchr($item->getBasename(), '.'), 1);
        if(strtolower($extension) == 'vcf') {
            $content = file_get_contents($item->getPathname());
            file_put_contents($outputFileName, $content, FILE_APPEND);
        }
    }
}
?>
Может кому-нибудь пригодится ;)

Обновление от 26 февраля 2012 года:
Для того, чтобы запустить скрипт нужно иметь "под рукой" установленный PHP.
Скопируйте код, приведенный выше, в отдельный файл, скажем vcf.php. Затем рядом с этим файлом создайте папку input и output. В input положите все ваши vcf файлы и запустите скрипт. скрипт отбединит все файлы в один contacts.vcf.

По странному стечению обстоятельств я именно сегодня буду делать эту операцию с телефоном девушки :-) Забавно.

6 комментариев:

  1. Я обновил пост. Если не разберешься - пиши skype george.zalizko, помогу :-)

    ОтветитьУдалить
  2. Спасибо. То что искал. 618 контактов в одно мгновение.

    ОтветитьУдалить
  3. Спасибо. То что искал. 618 контактов в одно мгновение.

    ОтветитьУдалить
  4. Есть способ попроще
    в командной строке в папке с файлами набираем COPY *.VCF allcontacts.vcf
    Имя конечного файла можно менять

    ОтветитьУдалить
  5. @Дмитрий )) всё гениальное - просто!

    ОтветитьУдалить