Zeit eines Anruf in einer Vcard mit vobject einfügen!!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

hallo alle,

ich habe mit vobject eine Vcard für Missed-Call erstellt, aber ich will nicht nur die nummer dadrin haben sondern auch die Zeitpunkt, an der der Anruf gekommen ist. Soweit ich weiss, brauche ich dafür den Parameter (X-IRMC-CALL-DATETIME), aber wenn ich das hier eingebe:

>>> card.add('X-IRMC-CALL-DATETIME')
<X-IRMC-CALL-DATETIME{}>
>>> card.X-IRMC-CALL-DATETIME.value = str(time.time)

dann kommt diese Fehlermeldung

File "<stdin>", line 1
SyntaxError: can't assign to operator

hat vielleicht jemand eine Ahnung, wie man X-IRMC-CALL-DATETIME mit vobject benutzen kann?

Danke
Zizou
BlackJack

@zizou2981: Irgendetwas mit einem ``-`` im Namen ist halt kein Name für Python. Das ``-`` ist ein Operator, gemeinhin für die Subtraktion verwendet. :-)

Mir scheint der `add()`-Aufruf gibt das erstellte und hinzugefügte Objekt als Ergebnis zurück. Nimm das doch einfach.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@BlackJack: das habe schon probiert aber es geht nicht. hier ist die ganze arbeit:

>>> import vobject
>>> import time
>>> from vobject import base
>>> card = vobject.vCard()
>>> card.add('n')
<N{} >
>>> card.n.value = vobject.vcard.Name(family='', given='')
>>> card.add('fn')
<FN{}>
>>> card.fn.value = ''
>>> card.add('tel')
<TEL{}>
>>> card.tel.value = '01764573443457'
>>> card.add('X-IRMC-CALL-DATETIME')
<X-IRMC-CALL-DATETIME{}>
>>> string = card.serialize()
>>> string
'BEGIN:VCARD\r\nVERSION:3.0\r\nFN:\r\nN:;;;;\r\nTEL:01764573443457\r\nX-IRMC-CAL
L-DATETIME:\r\nEND:VCARD\r\n'
>>> card.prettyPrint()
VCARD
X-IRMC-CALL-DATETIME:
VERSION: 3.0
TEL: 01764573443457
FN:
N:

du siehst schon, dass X-IRMC-CALL-DATETIME leer ist. das heißt ich muss genau wie bei TEL ein value eingeben und es muss danach wie in diesem Beispiel aussehen:

X-IRMC-CALL-DATETIME;MISSED:20100101T201200

irgend eine Idee?
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

jetzt habe ich es gefunden :lol:
man muss nur so machen:

start = card.add('X-IRMC-CALL-DATETIME')
start.value = str(time.time())

Danke
Antworten