|
@@ -1,3 +1,4 @@
|
|
|
|
|
+# coding=utf-8
|
|
|
# Doc
|
|
# Doc
|
|
|
# Script to extract Contacts from Sailfish Contact SQLite DB located at
|
|
# Script to extract Contacts from Sailfish Contact SQLite DB located at
|
|
|
#
|
|
#
|
|
@@ -12,8 +13,22 @@
|
|
|
import sqlite3
|
|
import sqlite3
|
|
|
import vobject
|
|
import vobject
|
|
|
import uuid
|
|
import uuid
|
|
|
|
|
+import argparse
|
|
|
|
|
|
|
|
-SQLconn = sqlite3.connect('Testdata/contacts_with-Phone-Mobile-Fax-Pager-Assistent.db')
|
|
|
|
|
|
|
+def DEBUG(debug,msg):
|
|
|
|
|
+ if debug is not None:
|
|
|
|
|
+ print("..DEBUG: " + msg)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+parser = argparse.ArgumentParser(description='Restore SailfishOS 3 Contacts', epilog='This script was written to restore SailfishOS 3 contacts as VCF files. To see additional information, visit: https://wiki.siningsoft.de/doku.php?id=sailfishos:projects:sailfish_contacts_rescue' )
|
|
|
|
|
+parser.add_argument('--db','-d', help="Sqlite3 Database file usually /home/{nemo,defaultuser)/.local/share/system/Contacts/qtcontacts-sqlite/contacts.db")
|
|
|
|
|
+parser.add_argument('--output','-o',help="Output directory for vcf files")
|
|
|
|
|
+parser.add_argument('--debug',action="store_true",help="debugging output to identify problems")
|
|
|
|
|
+args = parser.parse_args()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+SQLconn = sqlite3.connect(args.db)
|
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
try:
|
|
@@ -31,7 +46,7 @@ try:
|
|
|
vcf.add('n').value = vobject.vcard.Name( family=row[6], given=row[4] )
|
|
vcf.add('n').value = vobject.vcard.Name( family=row[6], given=row[4] )
|
|
|
vcf.add('fn').value =row[1]
|
|
vcf.add('fn').value =row[1]
|
|
|
|
|
|
|
|
- print("debug: Contact " + row[1])
|
|
|
|
|
|
|
+ DEBUG(args.debug,"Contact " + row[1])
|
|
|
|
|
|
|
|
|
|
|
|
|
SQLADRCur = SQLconn.cursor()
|
|
SQLADRCur = SQLconn.cursor()
|
|
@@ -68,7 +83,7 @@ try:
|
|
|
for Emailrow in SQLEmailCur.execute('SELECT * from EmailAddresses JOIN Details on Details.detailId= EmailAddresses.detailId where EmailAddresses.contactId = ' + str(contactID)):
|
|
for Emailrow in SQLEmailCur.execute('SELECT * from EmailAddresses JOIN Details on Details.detailId= EmailAddresses.detailId where EmailAddresses.contactId = ' + str(contactID)):
|
|
|
|
|
|
|
|
# debug ausgabe
|
|
# debug ausgabe
|
|
|
- print("...debug: " + str(Emailrow[2]) + " at " + str(Emailrow[9]))
|
|
|
|
|
|
|
+ DEBUG(args.debug,str(Emailrow[2]) + " at " + str(Emailrow[9]))
|
|
|
|
|
|
|
|
email = vcf.add('email')
|
|
email = vcf.add('email')
|
|
|
email.value = str(Emailrow[2])
|
|
email.value = str(Emailrow[2])
|