September 20, 2004 7:55 PM
BBDB1 handles all my contact information for use with Gnus among
other things. I love its flexibility and ease of use. A useful feature
is the support for automatic creation of a BBDB record while reading
email in Gnus.
My old windows email client could only export contact information as
Microsoft Outlook2 compatible Vcard files. I needed a quick way to
import all that information into BBDB. bbdb-snarf
is an inbuilt
utility that allows creation of records from files. I simply wrote a
function that converts vcard data into a format that bbdb-snarf
can
understand. Customization of bbdb-snarf-phone-regexp
to support
Indian phone numbers have been done very sloppily since any line
consisting only of numbers must be a phone number. Why? Because, my
function only supports four fields, Name, Email Address, URL, and
Phone number. ;)
(defun bbdb-snarf-vcard () "Snarf a vcard into BBDB." (interactive) (let (field del (kill-whole-line t) ;Lame fix to recognize indian phone numbers (bbdb-snarf-phone-regexp (concat "\\(([0-9]+)[-\\. ]?\\|[0-9]+[-\\. ]\\)?" "[0-9]+[-\\. ()]*[0-9]"))) (goto-char 0) (while (re-search-forward "^\\([-=A-Z;]*[:]\\)\\(.*$\\)" nil t) (setq field (match-string 1)) ;= at the end of line approximately ;specifies data is continued in next line as well (setq del (if (string= (substring (match-string 2) (- (length (match-string 2)) 1)) "=") t nil)) (if (not (string= field "http:")) (replace-match "" t t nil 1) (end-of-line) (newline)) (if (not (string-match "FN\\|EMAIL\\|URL\\|TEL" field)) (progn (if del (kill-line 2) (kill-line))))) (goto-char 0) (bbdb-snarf 0)))
To use this, simply call bbdb-snarf-vcard
while you are in a buffer
with vcard data in it. Altogether, it's merely an ugly cosmetic
adjustment so that bbdb-snarf
can do the real work.
Don't bother with this if you can export data as CSV files. For an updated list of BBDB importers, visit BbdbImporters.
[1] BBDB is a rolodex-like database program for GNU Emacs. BBDB stands
for Insidious Big Brother Database.
[2] Microsoft Outlook users can easily import their contact info
into BBDB, read BbdbImportFromOutlook.