Open Contact Book
Open Contact Book is a buiness-oriented, cross-platform, Python Qt
application allowing to manage databases of contacts through CardDAV.
CardDAV is an open
protocol for client/server access and sharing of contacts. It
is based on .vcf
files that are essentially text files.
It is supported by a large amount of server applications, to host
your contact books on the internet and share them between devices,
like Google Agenda, OwnCloud/NextCloud, or even CPanel.
It is also supported by a large amount of client applications,
DAVx⁵ on Android, Blackberry OS 10, Apple iOS and Contacts,
Thunderbird (through CardBook extension, and more recently natively)
on Windows, Linux and Mac, Evolution on Linux, etc.
However, most CardDAV application are really limited when it comes
to managing a large number of contacts, or just to merge duplicates.
They also have nothing to backup changes and prevent file corruption,
nor to manage geolocation. They became really slow as the number
of entries increases.
Current features
Spreadsheet view
The spreadsheet view is a read/write table of all the .vcf
contacts
files found in the address book repository. It allows fast access
for bulk-editing and exposes some of the technicality of the
Vcard format for the sake of fast manual access.
TODO: the changes made to the spreadsheet are not actually saved
for now. This is just a view.
Map view
The map view uses Nominatim and
Open Street Map databases
to geolocate your contacts on a map, in a completely de-googled,
privacy-compliant, way.
Where are your contacts located ? Turn your address book into
knowledge to plan for efficient touring or clients meetings.
An advanced text parsing tries to find hints of the accurate
location, using a spellcheck on the country names and various
combinations of addresses parts until it finds a match. The geolocation data is cached on your disk and will run faster
the next time.
Contact view
TODO: display a sum-up of the contact info with preview/display modes.
Filtering and sorting
TODO: fetch contacts whose tags and data match some rules.
Merging contacts and fields
TODO: merge duplicate contacts with rules, merge columns and refactor
your custom Vcard field.
Reliability
TODO: include git commit and versionning built-in, to track history
and revert any change in case of issues or corrupted data.
Developer friendly
Lib-ified
All the data processing can run headless, without a GUI.
The GUI Qt code and the data processing are actually fully separated.
Use data-mining technologies
The database of contacts is actually a usual pandas.DataFrame
.
This allows fast data handling because Python only acts as a binding
to lower-level data routines, while retaining all the power and
flexbility of Python objects. It also enables to use the usual
data-mining and maching-learning libraries.
Python terminal
TODO: access the internal pandas.DataFrame
directly from a terminal
widget, to apply advanced regex parsing etc.
Support
For now, only local repositories of .vcf
files are supported.
It is tested with Vcard 3.0 created with Thunderbird CardBook
plugin. It is tested against a database of 9000 contacts.
Install
Python
Install the Python interpreter
and PIP
Get the code
Dowload it here.
Dependencies
Run the script install.sh
at the root of the code directory:
$ sh install.sh
Software
The code can’t be installed system-wise yet, as this work is still
in a very early stage.
Start it from the terminal:
$ python main.py