premier commit
This commit is contained in:
commit
4ddad76a9f
|
@ -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.
|
|
@ -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()
|
Loading…
Reference in New Issue