48 lines
1.3 KiB
PHP
Executable File
48 lines
1.3 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
if(!empty($argv[1])) {
|
|
$filepath = $argv[1];
|
|
if(file_exists($filepath)) {
|
|
$file = file_get_contents($filepath);
|
|
} else {
|
|
echo 'Taki plik nie istnieje' . PHP_EOL;
|
|
exit(1);
|
|
}
|
|
} else {
|
|
echo 'Musisz podać ścieżkę do pliku .vcf' . PHP_EOL;
|
|
exit(2);
|
|
}
|
|
$data = explode('END:VCARD', $file);
|
|
array_pop($data);
|
|
|
|
$output = [];
|
|
$keys = [];
|
|
foreach($data as $item) {
|
|
$exploded = explode("\n", $item);
|
|
foreach($exploded as $line) {
|
|
if(strpos($line, ':') !== false) {
|
|
$kv = explode(':', $line);
|
|
if(!in_array($kv[0], $keys, true) && !in_array($kv[0], ['BEGIN', 'PHOTO;ENCODING=BASE64;JPEG', 'VERSION', 'X-LAST_TIME_CONTACTED'], true)) {
|
|
$keys[] = $kv[0];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$allKeysEmptyArray = array_fill_keys($keys, null);
|
|
foreach($data as $item) {
|
|
$exploded = explode("\n", $item);
|
|
$contact = [];
|
|
foreach($exploded as $line) {
|
|
if(strpos($line, ':') !== false) {
|
|
$kv = explode(':', $line);
|
|
if(!in_array($kv[0], ['BEGIN', 'PHOTO;ENCODING=BASE64;JPEG', 'VERSION', 'X-LAST_TIME_CONTACTED'], true)) {
|
|
$contact[$kv[0]] = isset($kv[1]) ? $kv[1] : null;
|
|
}
|
|
}
|
|
}
|
|
$output[] = array_merge($allKeysEmptyArray, $contact);
|
|
}
|
|
echo json_encode($output);
|
|
exit(0);
|