premier commit

This commit is contained in:
raspbeguy 2017-06-18 23:07:59 +02:00
commit 4ddad76a9f
2 changed files with 67 additions and 0 deletions

17
README.md Normal file
View File

@ -0,0 +1,17 @@
# contacts2sqlite
## À propos
Ce petit script, destiné à être invoqué par [vdirsyncer](https://vdirsyncer.pimutils.org/) est né dans l'optique de tenir à jour une base de données de contacts dans l'espoir de l'exploiter avec d'autres programmes (spoiler : proxy SMS).
## Utilisation
Dans votre configuration vdirsyncer, dans le paragraphe `[storage]` correspondant à la copie locale de vos contacts (nécessairement de type `filesystem`), ajoutez la ligne suivante :
```
post_hook = "/chemin/vers/contacts2sqlite.py"
```
## Attention
Pour le moment, le script ne supprimera pas dans la base de donnée les contacts supprimés par vdirsyncer.

50
contacts2sqlite.py Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python3
import os
import sys
import re
import sqlite3
import vobject
db_path = '~/contacts.db'
def_nat_pref = "33"
db_path = os.path.expanduser(db_path)
directory = os.path.dirname(db_path)
if not os.path.exists(directory):
os.makedirs(directory)
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS contacts (uid text primary key not null, name text not null, nick text, number text)")
vcf_file = open(sys.argv[1])
vcard = vobject.readOne(vcf_file)
vcf_file.close()
uid = vcard.uid.value
name = vcard.fn.value
nick = ''
try:
nick = vcard.nickname.value
except AttributeError:
pass
num = []
try:
for i in vcard.tel_list:
if i.type_param.lower() == "cell":
n = re.sub('[^0-9]','',i.value)
n = re.sub('^00','',n)
n = re.sub('^0',def_nat_pref,n)
num += [n]
except AttributeError:
pass
row = (uid,name,nick,','.join(num))
c.execute("INSERT OR REPLACE INTO contacts (uid, name, nick, number) VALUES (?,?,?,?)", row)
conn.commit()
conn.close()