Import Vcf Contacts
From Openmoko
To copy your contacts from other devices or desktop systems, you can use the VCF VCard format. This page explains how to export your contacts from various systems and how to import the resulting file on on Openmoko smartphone.
Contents |
Exporting old contacts to VCard format
To use the import tools you need your Contacts in VCF format.
- On nokia phones use the Nokia phone manager Citation needed
- On windows mobile phones you could use active sync to sync with Outlook and then use a Outlook export plugin to export as vcf
- On LG phones the backup function to memory card creates one file with multiple VCards
Exporting from Outlook / ActiveSync to VCF
Open Outlook, then open the VB editor by pressing ALT-F11, Insert a module, and paste in the following. Change "Z:\Openmoko\contacts" to wherever you want your vcf files saved (should be an existing, empty directory), and press F5 to run it.
Code:
Sub ExportContactsToVCF() 'Cheap and nasty way to export All Contacts to VCF files. 'By Dale Maggee, antisol (at) earthling (dot) net Dim CN As ContactItem Dim NS As NameSpace Dim Fld As MAPIFolder Set NS = Application.GetNamespace("MAPI") Set Fld = NS.GetDefaultFolder(olFolderContacts) For Each CN In Fld.Items Debug.Print CN.FullName CN.SaveAs "z:\Openmoko\contacts\" & CN.FullName & ".vcf", olVCard Next CN MsgBox "Done!" End Sub
voila! you now have multiple VCF files in whatever directory you chose, suitable to be imported by the Om 2007.2 python script below. (However not suitable for the addressbook tool of Om 2008.8.)
Export vCards from Mac OS X Addressbook
- Set the vCard Format to 2.1 in the config dialog
- Select all contacts and say "export vcard"
- Despite having selected the charset to be utf-8 you may need to do:
iconv -f latin1 -t utf-8 vCards.vcf | sed 's/CHARSET=LATIN1://g' > all.vcf
Import on Om 2008.8 and Qtopia
The Qtopia addressbook application supports import of VCF files out of the box. However, since there is a bug, if there are non-ASCII characters in your contacts you cannot use the version 3 format, otherwise you get multibyte UTF-8 characters mangled. Use the version 2.1 to get the encoding stated explicitly and thus characters imported correctly. But because there is another bug, when using version 2.1 vCards, the addressbook eats up all memory (and potentionally crashes the system) on some vCards with multiline entries.
If you're connected via SSH, run the following command first:
export DISPLAY=:0
(So that the addressbook will show on your phone. If you do not that and try to run addressbook locally on your computer display, you won't be able to use the application since the needed buttons will not show.)
Then you can simply run:
addressbook path_to_vCards_file_to_import.vcf
You will be asked if you want to import the contacts form addressbook.vcf (the contact name will be taken from the "N:" vCard field).
To import a huge number of contacts, single .vcf files can be merged together using cat *.vcf > all.vcf, than import all.vcf
Tip: If you want to prevent crashing your system if the memory leak occurs, set some limit on memory available to use, so that only the addressbook application dies after reaching the limit. I.e. prior to running the import, do something like:
ulimit -v 50000
If the above does not work, here are the original import guidelines:
To import your address book from VCard format (ASU/<=Qtopia 4.3.2-080808 snapshot):
LD_LIBRARY_PATH=/opt/Qtopia/lib /opt/Qtopia/bin/addressbook /home/root/addressbook.vcf
To import your address book from VCard format (>=Qtopia 4.3.2 stable):
LD_LIBRARY_PATH=/opt/Nokia/Qtopia/lib /opt/Nokia/Qtopia/bin/addressbook /home/root/addressbook.vcf
Mass Delete
The Qtopia addressbook doesn't seem to have a delete all function, which means that botching a vcf import is a painful process to undo through the phone GUI.
If you want to delete your entire addressbook or do other mass edits then you'll need access to a command line or GUI SQLite client (SQLite Database Browser seems to be a good, free one, though the SQLite command line client should be fine).
Shutdown Qtopia and use the client you have chosen to open up /home/root/Applications/qtopia_sqlite.db.
Important tables:
contacts | Contact names and other descriptive information, plus a unique id (recid) |
contactphonenumbers | A list of contact phone numbers matched to recid |
contactaddresses | Links address information to recid |
Restart Qtopia when you're done and you should have a reset addressbook.
On Om 2008.8
- Install sqlite3
- Open the database
- Delete all data from the contacts tables This will erase all your contacts and contact categories.
opkg install sqlite3 sqlite3 /home/root/Applications/Qtopia/qtopia_db.sqlite delete from contactcategories; delete from contactaddresses; delete from contactcustom; delete from contactphonenumbers; delete from contacts; .quit
The first two are shell commands, the delete commands must by typed in the sqlite> prompt which appears after the sqlite3 command. Prompt is not included here to allow copy/paste.
Import for 2007.2
Basic Information
Neo FreeRunner uses Evolution data server (eds) to save contacts. However, the specific version used differs from what is probably used on your desktop (if you have Evolution installed).
You cannot copy your addressbook.db from your desktop to Neo (bug 1119).
Import and Manage Scripts
If you want to import your old contacts to the Neo you could use this script:
If you first want to remove all existing contacts you could use this script.
If you have all contacts in seperate vcf files and just want to import all at once:
Simple script for one big contactsfile
(please add a .py after the filename, sorry my hoster gives an error if i link to .py files, even .py.txt)
In the simple scripts you need to add the following lines
ps = os.popen ('ps auxwwwwe | grep -m 1 DBUS_SESSION_BUS_ADDRESS') l = ps.read () r = re.compile ('DBUS_SESSION_BUS_ADDRESS=(\S+)') m = r.search (l) a = m.expand ('\\1') os.environ ['DBUS_SESSION_BUS_ADDRESS'] = a
Usage
The script is for the 2007.2 Version (default install on Neo FreeRunner), not for Qtopia
You need Python to use this script so do a
opkg install python-dbus
to install python and the python dbus module
Manage Contacts Script
This script needs all contacts in one big file
You also could run this script on a ssh session!
- Copy your big contacts file (contacts.txt) to your Neo
- Copy script to your Neo
- Connect via ssh to your Neo
- Fix special chars in your contacts file with you favorite text editor
- To import the file run on the SSH shell:
python manage-contacts.py load < contacts.txt
- For a backup your existing contacts on the Neo
python manage-contacts.py dump > contacts.txt
Simple Script
You must run the script in the OM Terminal, not over ssh
The script does a listdir and imports ALL files it found in that dir. (i'm a bad python programmer)
- Copy all vcf files to a separate directory on my freerunner
- Copy the ac script to the parent directory also on my freerunner
- Have the contacts program running (so you have eds running too)
- Go to the terminal on the freerunner and type in the vcf directory: "python ../ac" (root@om-gta02:~/vcf# python ../ac)
- Note: You must call the script in the OM terminal not via Bluetooth or USB or you get a dbus error. Using "dbus-launch python ../ac" doesn't work either.
- Done :D
Troubleshooting
- Make sure you have python and python-dbus installed
- Make sure you have no illegal chars (utf) in the filename and inside the vcf files. (I had problems with Ü,Ä etc)
- The characters seem to work if you convert them from =C3=A4 type of format to proper UTF-8, and the vcards also specify UTF-8 charset. you cannot use other charsets besides UTF-8 since they are delivered via DBus which does not allow others.
- Only vcf files should be in your current directory so do a ../ac.
- You must call the script in the OM terminal not via Bluetooth or USB. If you do so a dbus error occur
Authors
- Simple script by smurfy - phil <openmoko at smurfy.de>
- Manage Contacts script by Roland Mas <lolando at debian.org>
- Remove all Contacts script / simple script for one big file by Andreas Dalsgaard <andreas.dalsgaard at gmail.com>
Thanks to Import_Sim_Contacts for the original Python Script.