| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # Doc
- # Script to extract Contacts from Sailfish Contact SQLite DB located at
- #
- #
- # Links
- # FileFormatdescription: https://docs.fileformat.com/email/vcf/#vcf-30-example
- # Pytho vobject: http://eventable.github.io/vobject/
- # ChangeLog
- import sqlite3
- import vobject
- import uuid
- SQLconn = sqlite3.connect('../Testdata/system/Contacts/qtcontacts-sqlite/contacts.db')
- try:
- SQLContCur = SQLconn.cursor()
- for row in SQLContCur.execute('SELECT * FROM Contacts'):
- print(row[4] + ' ' + row[6])
-
- # contactID abfragen
- contactID=row[0]
-
- # wir erstellen das Objekt
- vcf = vobject.vCard()
-
- vcf.add('uid').value = str(uuid.uuid4())
- #vcf.add('uid').value = "Testdaten"
- vcf.add('n').value = vobject.vcard.Name( family=row[6], given=row[4] )
- vcf.add('fn').value =row[1]
-
- SQLEmailCur = SQLconn.cursor()
-
- ## Abfragen E-Mail-Adressen
- for Emailrow in SQLEmailCur.execute('SELECT * from EmailAddresses JOIN Details on Details.detailId= EmailAddresses.detailId where EmailAddresses.contactId = ' + str(contactID)):
-
- # debug ausgabe
- print("debug: " + str(Emailrow[2]) + " at " + str(Emailrow[9]))
-
- email = vcf.add('email')
- email.value = str(Emailrow[2])
-
- # nur den Typ einpflegen, wenn das hier nicht none ist
- if Emailrow[9] != None:
- email.type_param = str(Emailrow[9])
-
- print(vcf.serialize())
- # hier brauchen wir einige eception handles -> wie bekommen wir die einzelnen exceptions heruas ?
- #except:
- #print("Error in executing SQL")
-
-
- except AttributeError:
- print("Datatype mismatch")
- raise
- # das generöse Except am Ende
- except:
- print("unhandled error")
- raise
|