Skip to content

Instantly share code, notes, and snippets.

@snorrelo
Created January 2, 2016 20:23
Show Gist options
  • Save snorrelo/c84efb82bb475af8d45e to your computer and use it in GitHub Desktop.
Save snorrelo/c84efb82bb475af8d45e to your computer and use it in GitHub Desktop.
Lagre selgere som vcard
<?php
/*
* Skript for å hente ned ei kommaseparert fil fra http://telefonterror.no/ og
* konverterer denne til vCard som Apples Address Book kan benytte.
* Resultatfila skrives til samme katalog som skriptet og heter
* ./telefonterror-addressbook.vcf
*
* Ã…pne Address Book, opprett en gruppe (f.eks. Telefonterror) og fra et
* Utforsker-vindu dra og slipp fila inn i denne gruppen.
* Du kan også importere fila gjennom Address Books importfunksjon, men da
* vil ikke kontaktene plasseres i en gruppe og det kan bli et svare strev å
* se hva som er dine kontakter og hva som er henta fra telefonterror.no
*
* vCard-fila vil inneholde et vCard for hvert firma som har mindre enn 100
* telefonnummer knyttet til seg. For firma med mer enn 100 telefonnummer
* lages det et nytt kort for hvert hundrede nummer på formen
* firmanavn-teller (eks. ENIRO-2)
*
* VENNLIGST DONER til telefonterror.no OM DU BENYTTER TJENESTEN.
* http://telefonterror.no/
*
* Datagrunnlaget:
* Telefonterror.no (inkludert alt innhold og design) © 2006 – 2010 Bjarte Aune Olsen
*
* Dette skriptet:
* @copyright Copyright (c) 2011 Snorre Løvås (http://lovas.info/)
* @license http://opensource.org/licenses/gpl-3.0.html GNU Public License
* @author Snorre Løvås
*
* v0.1 - 2011-05-14
* Første versjon av skriptet. Quick and dirty
* v0.1.1 - 2012-01-22
* Rettet opp URL for cvs-fil
*
*/
$cvs_file='http://www.telefonterror.no/uke_alle2/nummerliste.csv';
$terror_cvs = '';
$terror_array = array();
$company_array = array();
$company_array_100 = array();
$company_type_array = array();
$company_type_array_100 = array();
$company_url_array = array();
$company_url_array_100 = array();
$vcard = '';
//hent fil og konverter fra ANSI til UTF-8
$terror_csv = file_get_contents($cvs_file);
// Fikk ikke lastet ned fila
if (!$terror_csv) {
die("Fikk ikke lastet ned $cvs_file. Avslutter.\n");
}
$terror_csv = mb_convert_encoding($terror_csv, 'UTF-8', 'Windows-1252');
//skriv utf-8-fil bare for å ha den
file_put_contents('./terrorliste-utf8.csv', $terror_csv );
//opprett et array
$terror_array = explode("\n",$terror_csv);
//fjerner første linje med kolonne-headere
array_shift($terror_array);
print "Antall telefonnummer funnet: ".count($terror_array)."\n";
//går gjennom linje for linje og oppretter arrays
foreach ($terror_array as $key => $value) {
//endrer linje til array for innslaget
$terror_row = explode('","', $value);
//henter firmanavn, trim og upparcase med UTF-8 for å lettere fjerne duplikater
$company=trim(mb_convert_case($terror_row[1],MB_CASE_UPPER,'UTF-8'));
//henter telefonnummer
$phone=trim($terror_row[2]);
//henter url
$url=trim($terror_row[3]);
//henter type firma - telefonsalg etc. Fjerner " på slutten
$type=trim(str_replace('"', '', $terror_row[4]));
//legger firma og nummer til i companyarray
if (key_exists($company, $company_array) ){
$company_array[$company]= $company_array[$company].','.$phone;
} else {
$company_array[$company]=$phone;
}
//siste verdi blir gjeldene for disse
$company_type_array[$company]=$type;
$company_url_array[$company]=$url;
}
print "Antall firma funnet: ".count($company_array)."\n";
// sjekker etter duplikatnummer. Kanskje unødvendig.
foreach ($company_array as $company => $phones) {
$phone_array = explode(',', $phones);
$phone_array_unique = array_unique($phone_array, SORT_STRING);
$company_array[$company]= implode(',', $phone_array_unique);
}
// splitter hvert firma opp i maks 100 nummer pr vcard
foreach ($company_array as $company => $phones) {
$phone_array = explode(',', $phones);
if (count($phone_array) < 100) {
$company_array_100[$company]= implode(',', $phone_array);
$company_type_array_100[$company]=$company_type_array[$company];
$company_url_array_100[$company]=$company_url_array[$company];
} else {
$phone_array_100 = array_chunk($phone_array, 100);
foreach ($phone_array_100 as $key => $value) {
$index=$key+1; //få teller til å starte på 1 istedet for 0
$company_array_100[$company.'-'.$index]= implode(',', $value);
$company_type_array_100[$company.'-'.$index]=$company_type_array[$company];
$company_url_array_100[$company.'-'.$index]=$company_url_array[$company];
}
}
}
//print_r($company_array_100);
print "Antall vcard generert: ".count($company_array_100)."\n";
//lager vcardfil
foreach ($company_array_100 as $company => $phones) {
$vcard=$vcard."BEGIN:VCARD\n";
$vcard=$vcard."VERSION:3.0\n";
$vcard=$vcard."N:;;;;\n";
$vcard=$vcard."FN:* $company\n";
$vcard=$vcard."ORG:$company\n";
$vcard=$vcard."TITLE:".$company_type_array_100[$company]."\n";
$vcard=$vcard."URL;TYPE=WORK:".str_replace(':','\:',$company_url_array_100[$company])."\n";
$phone_array = explode(',', $phones);
foreach ($phone_array as $key => $phone) {
$item=$key+1;
$vcard=$vcard."item$item.TEL;TYPE=WORK,VOICE:$phone\n";
$vcard=$vcard."item$item.X-ABLabel:WORK\n";
}
$vcard=$vcard."CATEGORIES:Telefonterror.no\n";
$vcard=$vcard."X-ABShowAs:COMPANY\n";
$vcard=$vcard."END:VCARD\n";
}
//skriv vcard til fil
$res = file_put_contents('./telefonterror-addressbook.vcf', $vcard);
if ($res) {
print count($company_array_100)." vCards skrevet til fil ./telefonterror-addressbook.vcf\n";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment