Owen T. Heisler

Last updated 2015-Mar-02

This page is also available in the following formats:

Questions or feedback? owenh000@gmail.com

I wrote a syntax specification and the following Python application for validating data in an external contact information database and exporting to various formats. The application has a command line interface and a graphical interface, both interfaces cover the same functionality.

Excerpt from the README

This utility reads an Addbook (AB4D) database and provides the following functionality:

Input is an Addbook (AB4D) database file.

Example command, using gpsbabel for one of its supported output formats, is something like this:

python3 addbooktool export Addbook.AB4D | \
      gpsbabel -i unicsv -f - -o garmin_gpi,category="Addbook" -F
      gpsbabel_out.gpi

Usage

$ addbooktool -h
      usage: [-h] [-p PASSWORD] [-V] {validate,export} ... input
      
      This is a utility for working with Addbook data.
      
      positional arguments:
        {validate,export}
          validate            validate fields in names table
          export              export contacts
        input                 Source AB4D file
      
      optional arguments:
        -h, --help            show this help message and exit
        -p PASSWORD, --password PASSWORD
                              provide password for AB4D database file (only
                              required on Windows)
        -V, --version         show program's version number and exit
      
      For subcommand usage information, run eg. 'addbooktool validate -h'.
$ addbooktool validate -h
      usage:  validate [-h] [-d] [-c] [-a]
      
      The validate command returns a list of the records which have invalid
      syntax. Use the optional arguments to relax or restrict the
      validation.
      
      optional arguments:
        -h, --help         show this help message and exit
        -d, --directions   require entries to include directions
        -c, --coordinates  require entries to include coordinates
        -a, --full-addr    require entries to have full addresses (rather
                           than just city/state)
$ addbooktool export -h
      usage:  export [-h] [-f {gcsv,gpi,gpx,vcard_dir,vcard_file}]
                     [-o OUTPUT]
      
      The export command returns the records in the specified format.
      
      optional arguments:
        -h, --help            show this help message and exit
        -f {gcsv,gpi,gpx,vcard_dir,vcard_file}, --format {gcsv,gpi,gpx,vcard_dir,vcard_file}
                              output format, one of: GPSBabel unicsv, GPI,
                              GPX, vCard folder, vCard file
        -o OUTPUT, --output OUTPUT
                              output file or directory, depending on
                              selected format (The default output location
                              for single-file formats is stdout, including
                              for binary formats. The default output
                              location for multiple-file formats is the
                              current directory. If the selected directory
                              is not empty, a temporary directory will be
                              created.)