Convertir un carnet d’adresse LDIF en VCF (Thunderbird vers Roundcube)

Thunderbird exporte son carnet d’adresses en format LDIF ou CSV ou  TSV. Or, quand on veut importer son carnet d’adresses dans Roundcube qui n’importe que le format VCF, on est un peu coincé…

Du coup, j’ai écrit rapidement un petit programme python qui fait la conversion (ldif2vcf.py) d’un carnet d’adresses rapidement, puisque je n’ai pas trouvé de solution sur le net1.

Comme il est destiné à Roundcube et que celui ci n’utilise pas (pour l’instant) tous les champs disponibles dans une vcard, seules sont converties les informations de nom, prénom, nom à afficher et adresse mail principale. Par conséquent, si vous voulez l’utiliser pour autre chose, ne vous étonnez pas si toutes les informations ne sont pas récupérées dans le fichier de sortie2.

Le fonctionnement est simple: vous indiquez le fichier d’entrée (.ldif) avec l’option « -f » et le fichier de sortie (.vcf) avec l’option « -o« . Si vous n’indiquez pas de fichier de sortie, le résultat s’affiche à l’écran.

Il faut bien sûr exporter préalablement votre carnet d’adresses depuis Thunderbird quelque part sur votre ordinateur.

exemple:

python ldif2vcf.py -f /tmp/adresses_personnelles.ldif

ou

python ldif2vcf.py -f /tmp/adresses_personnelles.ldif -o /tmp/sortie.vcf

L’option « -h » affiche une aide succincte.

Articles en relation:

Notes:
  1. vive les formats ouverts! []
  2. mais la modification de code serait simple pour tout récupérer []
  1. Mayet
    22 octobre 2010 à 09:39:49 | #1

    Je viens de télécharger le logiciel pour permettre la conversion du fichier ldif en vcf, mais une fois décompressé, il ne s’ouvre pas (s’exécute pas). Comment procéder ?

  2. 24 octobre 2010 à 13:56:32 | #2

    @ Mayet
    C’est un logiciel à utiliser en ligne de commande.
    Il faut donc ouvrir un terminal, se rendre dans le dossier où a été extraite l’archive et taper la commande donnée.
    Il faut que python soit bien sûr installé sur l’ordinateur, mais je crois que c’est le cas par défaut sur Ubuntu.

  3. 29 octobre 2010 à 14:58:11 | #3

    Bonjour,
    C’est en effet une bonne idée d’avoir fait ce script en python.
    Je l’ai téléchargé, dézippé et ça m’affiche ceci :
    python ldif2vcf.py -f /home/gamoth/Desktop/contact.ldif -o test.vcf
    File « ldif2vcf.py », line 51
    print « BEGIN:VCARD »
    ^
    SyntaxError: invalid syntax

    Une idée ?

    Bonne continuation.

  4. 29 octobre 2010 à 16:56:30 | #4

    @ Gamoth
    Étrange…
    Je viens de télécharger l’archive et de lancer le programme sans problème. Essaye de retélécharger le programme.
    Je ne vois pas d’où ça pourrait venir, surtout à cet endroit.
    Ou alors c’est un problème d’encodage. Je n’ai testé que sur des systèmes en UTF8.

  5. 29 octobre 2010 à 19:08:54 | #5

    Python 3 nécessite des parenthèses pour utiliser la fonction print.
    Je suis donc passé en version 2, en faisant python2 blablal
    Je vais voir ce que cela a donné.
    Merci.

  6. 29 octobre 2010 à 20:36:30 | #6

    Bonsoir,
    Je suis de retour pour constater que le programme ne fonctionne pas :'(
    python2 ldif2vcf.py -f test.ldif
    Traceback (most recent call last):
    File « ldif2vcf.py », line 121, in
    main(OPTIONS.file, OPTIONS.output)
    File « ldif2vcf.py », line 98, in main
    create_vcard(nom, prenom, nomaffiche, mail, fichout)
    UnboundLocalError: local variable ‘prenom’ referenced before assignment

    Voici un bout de mon fichier ldif :
    dn: cn=Toto Toto,mail=toto@toto.fr
    objectclass: top
    objectclass: person
    objectclass: organizationalPerson
    objectclass: inetOrgPerson
    objectclass: mozillaAbPersonAlpha
    sn: Some SN
    cn: toto toto
    mail: toto@toto.fr
    modifytimestamp: 0

    Merci.

  7. 31 octobre 2010 à 15:41:52 | #7

    Finalement c’était du à une mauvaise composition de mon ldif.
    Si tu pouvais effacer mon précédent message car il comporte un nom que j’ai oublié.
    Merci

  8. camille
    3 décembre 2010 à 14:43:50 | #8

    Cela fonctionne super bien! Je l’ai utilisé pour exporter mes contacts Thunderbird (ldif) vers Gmail (vcf). En effet, Gmail ne permet pas d’importer les fichiers csv issus de Thunderbird (il voit toutes les infos comme des « Notes »).

    MERCI!!!

  9. Granier
    16 décembre 2010 à 18:35:35 | #9

    Merci beaucoup, quel bonheur de trouver des gens compétents qui donnent ! librement votre,
    N.Granier

  10. Eric
    28 juin 2011 à 12:22:19 | #10

    Merci pour ce petit programme qui m’a fait gagner pas mal de temps.

  11. Carlito
    21 octobre 2011 à 11:18:44 | #11

    Bonjour,
    Formidable programme, pour moi aussi ça fonctionne.
    J’essaye d’y ajouter les n° de téléphone, mais je n’arrives pas à adapter le programme. Je ne récupère pas la donnée en sortie.
    Pourriez-vous m’aider SVP ?
    Carlito

  12. 26 octobre 2011 à 16:14:40 | #12

    Mis en lien.
    Merci.

  13. 29 octobre 2011 à 08:29:47 | #13

    @Carlito
    J’ai modifié le programme pour qu’il note le téléphone dans la vcard. Re-télécharge le et ré-essaie, ça devrait fonctionner.

  14. Cneus
    2 novembre 2011 à 15:48:18 | #14

    zut ! je n’y arrive pas sous XP. Est ce seulement possible ?

  15. 2 novembre 2011 à 20:12:07 | #15

    A priori, oui, aucune fonction spécifique à l’OS n’est utilisée, c’est du python simple.
    Le mieux est d’indiquer les messages d’erreurs visibles dans la console.

  16. Flower
    4 novembre 2011 à 14:14:40 | #16

    Bonjour,

    J’ai un message d’erreur (je suis sur seven avec python 2.3.5) :

    >>> python ldif2vcf.py -f /cp/test.ldif -o /cp/test.vcf
    File «  », line 1
    python ldif2vcf.py -f /cp/test.ldif -o /cp/test.vcf
    ^
    SyntaxError: invalid syntax
    >>>

    Merci pour votre aide

  17. 4 novembre 2011 à 14:40:11 | #17

    @ Flower
    salut,
    ce n’est pas DANS python que tu dois le lancer, mais dans une console « cmd » simple (menu démarrer, taper « cmd » dans le champ de recherche. Ensuite, aller à l’endroit où se trouve le programme et ton fichier ldif et taper la commande)

  18. Flower
    4 novembre 2011 à 14:52:48 | #18

    effectivement, cela fonctionne mieux,
    merci

  19. lolocosto
    26 mars 2012 à 12:41:56 | #19

    Bonjour
    j’ai tout fait et tout c’est passé normalement mais roundcube ne veut pas de mon fichier test.vcf (format non valide)??

    Je nage

    Merci d’avance

  20. miraks
    21 avril 2012 à 17:17:31 | #20

    lolocosto :
    Bonjour
    j’ai tout fait et tout c’est passé normalement mais roundcube ne veut pas de mon fichier test.vcf (format non valide)??
    Je nage
    Merci d’avance

    Pareil pour moi !

  21. 21 avril 2012 à 17:52:34 | #21

    Je ne sais pas non plus. Je viens de refaire le test et ça fonctionne. Comment as tu exporté ton fichier? depuis Thunderbird? Quelle version? Et quelle version de roundcube?

  22. Pizzaoilo
    4 juin 2012 à 19:24:54 | #22

    Salut,

    l’hébergement où j’utilise Roundcube vient de passer de Debian old-stable à Lenny, du coup, le script d’import ne fonctionne plus effectivement. Je crois que c’est la 0.7.1-1~bpo60+1 (backport). La stable était la 0.3.1-6

  23. laguill
    26 juillet 2012 à 16:33:37 | #23

    salut a tous
    je sais je suis un nul en info avant que lisiez mon post mais j’ai besoin d’un service svp
    comme vous j’ai un fichier csv et ldif, et roundcube me demande du vcard.
    J’ai un Windows seven (de la merde je sais)
    Comment je dois faire pour réaliser la meme chose que vous ? (convertir)
    Je ne connais pas assez pour y arriver juste avec vos post

    Merci d’avance

  24. Boyington
    4 décembre 2012 à 17:40:33 | #24

    J’ai un peu ramé, mais finalement c’était moi le responsable.
    Il faut que le chemin soit « RIGOUREUSEMENT EXACT » et que les noms
    de fichiers soient de quelques caractères (exp: sortie.vcf) comme
    indiqué dans l’aide et également pour le fichier .ldif (exp: abcde.ldif)
    Merci @ Mayet
    JM

  25. francharb
    9 janvier 2013 à 23:47:11 | #25

    Bonsoir,

    J’ai découvert votre script il y a deux jours. J’ai pu le lancer sur un export ldif de thunderbird mais je ne suis pas arrivé à l’importer dans roundcube.

    J’ai regardé le fichier généré et le marqueur « END:VCARD » n’est pas à la ligne.

    Donc j’ai modifié votre script en remplacant la ligne 65 ;
    sortie.write(« TEL;TYPE=HOME,VOICE:%s » % telephoneNumber)
    par
    sortie.write(« TEL;TYPE=HOME,VOICE:%s\n » % telephoneNumber)

    Et maintenant c’est ok!

    Je suppose que c’est ce problème qu’on rencontré lolocosto et miraks.

    (Pour info, j’utilise Thunderbird 17 et Roundcube Webmail 0.8.4)

    J’espère que ça aidera et merci pour le script!

  26. charlie6
    8 février 2013 à 09:02:12 | #26

    Bonjour Manuberro,
    merci pour ce script !
    il fonctionne à merveille pour la conversion de carnets d’adresses exportés en .ldif provenant de Seamonkey (versions testées: 1.18 …c’est déjà ancien; et plus récente version 2.05);
    Le carnet .vcf convertit est importé « nickel » sans aucune manip supplémentaire dans Simple Mail (version 2.84) installé avec Firefox 18.0.

    Pour info: utilisé ici sur la distro dPup-Exprimo-5.X.3.6.2 (dérivé de PuppyLinux) et Python installé en « montant » l’archive devx_squeeze_5.X.3.6.2.1.sfs (procédé spécifique et courant à PuppyLinux).

    Merci encore
    Charlie

  27. 8 février 2013 à 10:23:17 | #27

    Content que ça serve encore!

  28. Nanal
    2 avril 2013 à 10:04:00 | #28

    Merci pour ce script qui fait gagner du temps !

  29. krumpli
    4 septembre 2014 à 09:07:17 | #29

    Bonjour,

    j’essaye à mon tour d’utiliser votre logiciel et je n’y arrive pas. je suis sur mac et quand je l’enregistre puis je l’ouvre sur mon ordi, il s’ouvre dans un fichier text edit. Pouvez-vous m’aider ? Merci

  30. 4 septembre 2014 à 09:52:57 | #30

    @ krumpli
    Bonjour,
    je ne connais pas mac, mais il ne faut pas ouvrir le programme, il faut le lancer avec python.
    Une recherche sur google me donne ces deux liens qui devraient vous donner la solution:
    http://python.developpez.com/cours/DiveIntoPython/php/frdiveintopython/installing_python/macosx.php
    http://fr.openclassrooms.com/forum/sujet/executer-un-fichier-python-sous-mac-os-x-84391

  31. krumpli
    4 septembre 2014 à 10:01:12 | #31

    J’essaye de suite et je vous dis.
    Merci pour votre réactivité !

  32. krumpli
    4 septembre 2014 à 10:30:13 | #32

    j’ai regardé mais ce n’est pas du tout à ma portée… tant pis, je vais chercher ailleurs et merci quand même !

  33. 14 septembre 2015 à 09:38:54 | #33

    Merci pour ce script !
    Par contre, il y a effectivement une erreur, telle que signalée (et avec la correction) de francharb.

    Il y a un dépôt Github pour ce script ?

  34. 14 septembre 2015 à 10:46:42 | #34

    Salut,
    je viens de modifier le script pour corriger l’erreur signalée par Francharb.
    Non, pas de dépôt Github.

  35. orfraie
    24 novembre 2015 à 15:46:50 | #35

    Je viens de récuperer le script et de le modifier pour porter un annuaire ldif vers un vieux format Android GingerBread.
    J’ai charge le vcf , le vieux smartphone a tout avalé sans râler.
    Néanmoins, il a fallut bricoler un tantinet pour faire les backups de 2 SIM, du telephone, reprendre les données sous thunderbird, trier , classer , épurer et exporter en formeat ldif.
    Merci encore pour ce script sympathique que j’aurais du ecrire si je ne l’avais pas trouvé iic.
    Bonne journée à tous.

  36. Joffrey
    18 décembre 2015 à 16:37:32 | #36

    Bonjour
    Je dois exporter des contacts de thunderbird vers outlook 2013, la conversion se passe bien, j’obtient un fichier.vcf mais quand je l’ajoute dans outlook, il n’ajoute que le premier contact du fichier pas les autres.
    Je ne trouve pas la cause, merci à vous.
    Cordialement

  37. 18 décembre 2015 à 17:03:22 | #37

    Bonjour,
    avec vous regardé le contenu du fichier vcf avec un éditeur de texte? Y a t-il tous les contacts ou seulement le premier?

  1. 20 octobre 2010 à 22:57:40 | #1

Anti-Spam Quiz:

antibot * Time limit is exhausted. Please reload the CAPTCHA.

54.198.23.251