Karl Voit <devn...@karl-voit.at> writes: > Hi! > > I wrote a Python script that parses an Org-mode file in order to > generate a VCard 2.1 compatible output file I am using to import to > my Android 4.4 device: > > https://github.com/novoid/org-contacts2vcard > > The reason I wrote it in Python is that I don't know ELISP well > enough. The reason I wrote the script instead of using existing > export methods: I only want to export a small sub-set (names, phone > numbers, email addresses, contact image) due to privacy reasons.
the below function will only export name, phones and email #+begin_src (defun org-contacts-vcard-format (contact) "Formats CONTACT in VCard 3.0 format." (let* ((properties (caddr contact)) (name (org-contacts-vcard-escape (car contact))) (n (org-contacts-vcard-encode-name name)) (email (cdr (assoc-string org-contacts-email-property properties))) (tel (cdr (assoc-string org-contacts-tel-property properties))) (ignore-list (cdr (assoc-string org-contacts-ignore-property properties))) (ignore-list (when ignore-list (org-contacts-split-property ignore-list))) (head (format "BEGIN:VCARD\nVERSION:3.0\nN:%s\nFN:%s\n" n name)) emails-list result phones-list) (concat head (when email (progn (setq emails-list (org-contacts-remove-ignored-property-values ignore-list (org-contacts-split-property email))) (setq result "") (while emails-list (setq result (concat result "EMAIL:" (org-contacts-strip-link (car emails-list)) "\n")) (setq emails-list (cdr emails-list))) result)) (when tel (progn (setq phones-list (org-contacts-remove-ignored-property-values ignore-list (org-contacts-split-property tel))) (setq result "") (while phones-list (setq result (concat result "TEL:" (org-link-unescape (org-contacts-strip-link (car phones-list))) "\n")) (setq phones-list (cdr phones-list))) result)) "END:VCARD\n\n"))) #+end_src > > So far, it is a one-direction approach and no synchronization > solution. > > > > By the way: does somebody know of any somewhat intelligent tool that > is able to compare two different VCard files? The main issue here is > the fact that VCard order and property order within a single VCard > can be different but the VCard file could still contain the same > information. So line-by-line comparisons like diff do not work here. This may be difficult, I use org-contacts and use a elisp function to merge all the contacs which have same name. then export contacts to a vcard file. --