2
0

vcfExport_PhoneNumbers.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # Doc
  2. # Script to extract Contacts from Sailfish Contact SQLite DB located at
  3. #
  4. #
  5. # Links
  6. # FileFormatdescription: https://docs.fileformat.com/email/vcf/#vcf-30-example
  7. # Pytho vobject: http://eventable.github.io/vobject/
  8. # ChangeLog
  9. import sqlite3
  10. import vobject
  11. import uuid
  12. SQLconn = sqlite3.connect('../Testdata/system/Contacts/qtcontacts-sqlite/contacts.db')
  13. try:
  14. SQLContCur = SQLconn.cursor()
  15. for row in SQLContCur.execute('SELECT * FROM Contacts'):
  16. print(row[4] + ' ' + row[6])
  17. # contactID abfragen
  18. contactID=row[0]
  19. # wir erstellen das Objekt
  20. vcf = vobject.vCard()
  21. vcf.add('uid').value = str(uuid.uuid4())
  22. #vcf.add('uid').value = "Testdaten"
  23. vcf.add('n').value = vobject.vcard.Name( family=row[6], given=row[4] )
  24. vcf.add('fn').value =row[1]
  25. SQLEmailCur = SQLconn.cursor()
  26. ## Abfragen E-Mail-Adressen
  27. for Emailrow in SQLEmailCur.execute('SELECT * from EmailAddresses JOIN Details on Details.detailId= EmailAddresses.detailId where EmailAddresses.contactId = ' + str(contactID)):
  28. # debug ausgabe
  29. print("debug: " + str(Emailrow[2]) + " at " + str(Emailrow[9]))
  30. email = vcf.add('email')
  31. email.value = str(Emailrow[2])
  32. # nur den Typ einpflegen, wenn das hier nicht none ist
  33. if Emailrow[9] != None:
  34. email.type_param = str(Emailrow[9])
  35. print(vcf.serialize())
  36. # hier brauchen wir einige eception handles -> wie bekommen wir die einzelnen exceptions heruas ?
  37. #except:
  38. #print("Error in executing SQL")
  39. except AttributeError:
  40. print("Datatype mismatch")
  41. raise
  42. # das generöse Except am Ende
  43. except:
  44. print("unhandled error")
  45. raise