Titus von der Malsburg <malsb...@posteo.de> writes: > Hi list! > > I decided to give org-contacts a try. Since there doesn't seem to be a > facility for importing contacts in vcard format, I wrote a little Python > script for that. Perhaps someone on this list finds it useful. > > https://gist.github.com/tmalsburg/9747104 > > The script uses the Python package vobject for parsing vcard files. On > Debian-like systems this package is available as python-vobject. I > tested the script with contacts exported from Apple's iCloud service and > that worked well. However, the vcard format is somewhat messy and I > don't know what happens with vcard files generated in other contact > managers. Use at your own risk.
Import from csv is a solution too, I use the below hack functions to import a csv file... #+begin_src (defun eh-org-contacts-parse-csv-line (line) "Build a org contact from a csv line" (let ((list (split-string line ","))) (concat "* " (nth 0 list) "\n" ":PROPERTIES:\n" ":PHONE: " (nth 1 list) "\n" ":EMAIL: " (let ((string (nth 2 list))) (if (string-match-p "@" string) string (if (> (length string) 0) (concat string "@qq.com")))) "\n" ":NOTE: " (mapconcat 'identity (nthcdr 3 list) "; ") "\n" ":END:\n"))) (defun eh-org-contacts-csv-import (&optional filename) "Convert a csv file to org contacts format and insert current point" (interactive) (let ((file (if filename filename (read-file-name "CSV file:"))) (buffer (current-buffer)) (point (point)) contacts-string) (with-temp-buffer (insert-file-contents file) (goto-char (point-min)) (while (< (point) (point-max)) (setq contacts-string (concat contacts-string (eh-org-contacts-parse-csv-line (buffer-substring (point) (progn (end-of-line) (point)))) "\n")) (forward-line 1) (beginning-of-line 1))) (switch-to-buffer buffer) (goto-char point) (insert contacts-string))) #+end_src > > If there's interest, I might migrate the script to a proper Github > repository and develop it further, i.e., merge your pull-requests ;-) > > Titus --