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