Samstag, 12. Juni 2010

VCARD Import von XING nach Outlook / Evolution inklusive Fotos

Das VCARD-Visitenkartenfomat bietet die Möglichkeit, ein Portrait-Bild einzubetten.
XING bietet einen Adressexport im VCARD-Format an.
Leider haben die XING-Entwickler etwas geschlampt und einen Export erzeugt, der einer Mischung aus VCARD 2.1 und 3.0 entspricht. Darüber sehen Outlook und Evolution zum Glück hinweg.

Dass Umlaute in UTF-8 kodiert sind, als Zeichensatz aber explizit ISO-8859-1 in der VCARD angegeben wird, verzeihen die beiden Programme natürlich nicht.

Zur die Portrait-Bilder greift XING auf die Spezifikation zurück, die die Angabe einer URL zulässt. Damit können Outlook und Evolution jedoch nichts anfangen.
Was die Adressverwaltungen beim VCARD-Import jedoch verstehen, sind BASE64-kodierte Bilder.

Was liegt also näher, als alle Bilder per wget von XING herunterzuladen und die URL in den VCARDs durch BASE64-kodierte Bilder zu ersetzen?
Die Zeichensatzangaben können wir dann auch gleich korrigieren.
Dabei muss beachtet werden, dass auch MS Outlook nicht 100% die V2.1-Spezifikation versteht. Das nach V2.1 konforme "ENCODING=BASE64" versteht Outlook nicht. Outlook braucht die RFC2426-konforme Variante "ENCODING=b".
Weiterhin ist Outlook "case sensitive" in Bezug auf den Wert zu CHARSET. Es muss also "utf-8" und nicht "UTF-8" heißen.

Folgendes Bash-Skript erfüllt den Zweck:
#!/bin/bash
# Copyright 2010 Superwallah, this code is distributed under GPL 3.0
if [ "$1" = "" ] ; then
echo "usage: ./xing2outlook.sh vcards-XING.vcf"
exit
fi
# wget all images
wget -N $(gawk -F";" '/PHOTO/ { print substr($3,11,length($3)-11)}' $1 )
# correct charset settings in XING vcards
sed -e 's/ISO-8859-1/utf-8/g' $1 > neuesvcard_out.vcf
# delete empty address lines
sed -e '/;;;;;;/d' neuesvcard_out.vcf > XING4Outlook.vcf
# convert all pictures into base64
for i in $( ls *.jpeg *.jpg *.gif 2> error.log ); do
base64 --wrap=0 $i > $i.b64
# BASE64 enthält /, daher ! sed-Trennzeichen
sed -e 's!VALUE=URL;TYPE=JPEG:.*'$i'!ENCODING=b;TYPE=JPEG:'$(cat $i.b64)'!g' XING4Outlook.vcf > neuesvcard_out.vcf
cp neuesvcard_out.vcf XING4Outlook.vcf
done
rm neuesvcard_out.vcf


Dabei sei allerdings auf Abschnitt 4.2 der XING AGBs verwiesen, die keinen automatisierten Zugriff erlauben.
Wörtlich zitieren darf ich die AGBs hier allerdings auch nicht, da ich sonst ebenfalls gegen denselben Abschnitt verstoßen würde.

Also: Es handelt sich um ein Gedankenexperiment. Die Nutzung ist ausdrücklich untersagt. Ich übernehme keinerlei Gewähr für Auswirkung der Nutzung des Codes.

Trackback URL:
http://superwallah.twoday.net/stories/6377326/modTrackback

Superwallah - IT, Innovation, Indien

Globaler Cyber-Fortschritt ist heute

Suche

 

ich

Du bist nicht angemeldet.

Wer bist Du?

Sag es mir. Und hinterlass einen Kommentar nach Lesen eines Eintrag!

Aktuelle Beiträge

Sicherheit in Android...
TLS ist nur so sicher wie die Gesamtheit der Root-CAs,...
superwallah - 13. Jun, 21:30
Den richtigen Co-Working-Space...
Die moderne Welt des Arbeitens liegt im Teilen der...
superwallah - 24. Mai, 18:16
Adressen und Kalender...
Wer meinem Blog folgt, weiss, dass ich mich konsequent...
superwallah - 23. Mai, 09:36
Arduino für Kinder...
Scratch hat der Welt eine Visualisierung von Programmcode...
superwallah - 12. Mrz, 21:33
Hacking Betzold Lernbausatz...
Betzold bietet einen tollen Bausatz, der in gewisser...
superwallah - 1. Dez, 09:56

Meine Gadgets

Gesehene Filme

Zähler

Web Counter by www.webcounter.goweb.de
Web Counter by www.webcounter.goweb.de

Status

Online seit 3980 Tagen
Zuletzt aktualisiert: 13. Jun, 21:30