-
-
Save snorrelo/c84efb82bb475af8d45e to your computer and use it in GitHub Desktop.
Lagre selgere som vcard
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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