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 net ((vive les formats ouverts!)).

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 sortie ((mais la modification de code serait simple pour tout récupérer)).

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:

38 réflexions sur « Convertir un carnet d’adresse LDIF en VCF (Thunderbird vers Roundcube) »

  1. Ping : VCF - - Financial Ratios

  2. 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 ?

  3. @ 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.

  4. 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.

  5. @ 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.

  6. 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.

  7. 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.

  8. 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

  9. 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!!!

  10. 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

  11. @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.

  12. 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.

  13. 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

  14. @ 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)

  15. 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

  16. 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 !

  17. 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?

  18. 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

  19. 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

  20. 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

  21. 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!

  22. 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

  23. 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

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

  25. 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 ?

  26. 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.

  27. 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

Les commentaires sont fermés.