pythonvcf-vcardvobject

Creating a multiple phone vCard using vObject


im using vObject to create a vCard. Everything works well except I can't add multiple phone numbers.

Right now i'm doing this:

v.add('tel')
v.tel.type_param = 'WORK'
v.tel.value = employee.office_phone

v.add('tel')
v.tel.type_param = 'FAX'
v.tel.value = employee.fax

As it's working as a key value, the work phone is overwritten by the fax number.

Any idea on who to do it right?

Thanks!


Solution

  • The add() method returns a specific object which can be used to fill in more data:

    import vobject
    
    j = vobject.vCard()
    o = j.add('fn')
    o.value = "Meiner Einer"
    
    o = j.add('n')
    o.value = vobject.vcard.Name( family='Einer', given='Meiner' )
    
    o = j.add('tel')
    o.type_param = "cell"
    o.value = '+321 987 654321'
    
    o = j.add('tel')
    o.type_param = "work"
    o.value = '+01 88 77 66 55'
    
    o = j.add('tel')
    o.type_param = "home"
    o.value = '+49 181 99 00 00 00'
    
    print(j.serialize())
    

    Output:

    BEGIN:VCARD
    VERSION:3.0
    FN:Meiner Einer
    N:Einer;Meiner;;;
    TEL;TYPE=cell:+321 987 654321
    TEL;TYPE=work:+01 88 77 66 55
    TEL;TYPE=home:+49 181 99 00 00 00
    END:VCARD