I've attached a script that I use to convert tab-separated data (as
generated from mysql) into a vcard file.
Alex.
On Fri, 18 Jul 2008, Al Johnson wrote:
On Friday 18 July 2008, Markus Schlichting wrote:
Am Freitag, 18. Juli 2008 07:14:13 schrieb Curtis Vaughan:
I use Thunderbird for Email. I want to export my contacts from the
Address Book and import them to FR. I don't see any instructions on how
to do that. In fact, the only solutions seem to be for me to import my
contacts into Evolution or (god forbid) Outlook and then export them from
there.
Is there no other solution?
Is it possible to export Thunderbird Contacts as VCF files ? I don't use
thunderbird regulary, but I think it is, so you can use
http://http//wiki.openmoko.org/wiki/Import_Vcf_Contacts to import your
contacts. Used it to copy my contact from kontact :-)
Kontact is nice like that, but it helps that it uses vCard natively.
Thunderbird doesn't - you can export to LDIF, CSV or tab-delimited. At
present the solutions seem to be to use a roundabout route or write some
code.
_______________________________________________
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community
######################################################################
# Takes a (tab-) seperated ascii file and writes out a file of
# VCards (stdin -> stdout).
# Input is a textfile with separated fields and a header. example:
# matchcode vorname land ort telefon telefon2 fax
nr_gruppe mark gruppen name info plz strasse handy gebdat
memo picture
# FA-ERDING Erding Erding 123/456 NULL 0 F
Finanzamt StNr. 123/456/78900 85422 Postf. 1262
NULL
#
# Or using mysql:
# echo 'select * from my_addresstable'|mysql -pmy_password -hlocalhost
my_database > ~/tmp/contacts.vcf
#
# No "..." around fields, tab separated (configurable, see below).
# You shoud run this script on the linux host, since ASCII<->UTF-8
# conversion seems not very well supported on the moko phone.
# Copy the resulting output file via scp onto the phone and
# Use the manage-contacts.py load < contacts.vcf
# There.
import sys,time
####################
# user configuration
# adapt here the real field names of the table
sql_surename_field='name'
sql_prename_field='vorname'
sql_phone_field='telefon'
sql_phone2_field='telefon2'
sql_mobile_field='handy'
# It is possible to convert only a subset of all addresses.
# In my special case, I have a groups field which contains
# an 'O' character if it shoud be exported to some phone.
# To switch off the filter, replace the 'sql_filter_search'
# content with '' (instead of the 'O').
sql_filter_field='gruppen'
sql_filter_search='O'
# tab by default
sql_delimiter='\t'
# set this to your own country phone prefix, e.g. +1 for USA
# it will be prepended automatically
country_code='+49'
# end configuration options
####################
# convert a phone number of the form '089/123456' into
# '+4989123456' so that moko phone recognizes the sender
# id correctly.
# This is probably germany phone number specific...
def normalize(nr):
result=nr.replace( "/", "" )
if result.startswith('0'):
result = '+49' + result[1:]
return result
lines = sys.stdin.readlines ()
name_idx=-1
vorname_idx=-1
phonenr_idx = -1
phonenr2_idx = -1
mobile_idx = -1
filter_idx = -1
linenr=0
for line in lines:
columns = line.split(sql_delimiter)
if linenr == 0:
# print columns
try:
name_idx=columns.index(sql_surename_field)
vorname_idx=columns.index(sql_prename_field)
phonenr_idx=columns.index(sql_phone_field)
phonenr2_idx=columns.index(sql_phone2_field)
mobile_idx=columns.index(sql_mobile_field)
filter_idx=columns.index(sql_filter_field)
except:
# print "some fields not found: " + str(name_idx) + " " +
str(vorname_idx ) + " " + str( phonenr_idx ) + " " + str( phonenr2_idx ) + " "
+ str( mobile_idx ) + " " + str( filter_idx )
pass
else:
# convert all fields into unicode.
# This seems not to be supported well on the moko,
# so it is better to let the linux host do the unicode
# conversion (run this script locally)
for i in range( 0,len(columns)-1 ):
# convert the read-in string from ASCII into unicode
try:
columns[i] = columns[i].decode( "iso-8859-1" )
except:
print "cannot convert to unicode: " + columns[i]
# and convert it back again into UTF-8 what is expected
# from the VCF format.
try:
columns[i] = columns[i].encode( 'utf-8', "replace" )
except:
print "cannot convert to utf-8: " + columns[i]
# only export those entries, that match the filter condition
# (see above in the field description)
if columns[filter_idx].find(sql_filter_search) >= 0:
phone1=normalize( columns[phonenr_idx] )
phone2=normalize( columns[phonenr2_idx] )
mobile=normalize( columns[mobile_idx] )
print "BEGIN:VCARD"
print "VERSION:3.0"
print "REV:" + time.strftime ('%Y-%m-%dT%H:%M:%SZ', time.gmtime())
print "UID:sql-" + str(linenr)
print "FN:" + columns[name_idx] + " " + columns[vorname_idx]
print "TEL;TYPE=HOME;TYPE=pref:" + phone1
if phone2 != '' and phone2 != 'NULL':
print "TEL;TYPE=WORK:" + phone2
if mobile != '' and mobile != 'NULL':
print "TEL;TYPE=CELL:" + mobile
print "END:VCARD"
linenr = linenr + 1
_______________________________________________
Openmoko community mailing list
community@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/community