diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-04-20 12:37:49 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-04-20 12:37:49 +0100 |
commit | 7ab405c8cf32a49ead868b9d5aa8b05b8c5942e5 (patch) | |
tree | 0b6692a5f2ca991c4f166e9a0a3f424688113dad | |
parent | 5c20414682c3ce1738b84d9ce6c936c0f7ed44cd (diff) | |
download | clab-7ab405c8cf32a49ead868b9d5aa8b05b8c5942e5.tar.gz |
Add script to convert abook databases to clab
-rwxr-xr-x | abook-to-clab | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/abook-to-clab b/abook-to-clab new file mode 100755 index 0000000..f182972 --- /dev/null +++ b/abook-to-clab @@ -0,0 +1,47 @@ +#!/usr/bin/python + + +import ConfigParser +import os +import yaml +import sys + + +records = {} + +for filename in sys.argv[1:]: + cp = ConfigParser.ConfigParser() + cp.read([filename]) + for section in cp.sections(): + if section == 'format': + continue + obj = {} + for option in cp.options(section): + assert option not in obj + v = cp.get(section, option, raw=True) + if ',' in v: + vs = v.split(',') + obj[option] = dict((str(i), x) for i, x in enumerate(vs)) + else: + obj[option] = v + + assert type(obj['name']) is str + uid = ''.join(obj['name'].split()).lower() + if uid in records: + r = records[uid] + for key in obj: + if key in r: + v = r[key] + if type(v) is dict: + v[str(len(v) + 1)] = obj[key] + else: + r[key] = { '0': v, '1': obj[key] } + else: + r[key] = obj[key] + else: + records[uid] = obj + +for uid, r in records.iteritems(): + with open(os.path.join('db', uid + '.yaml'), 'w') as f: + yaml.safe_dump(r, stream=f, default_flow_style=False) + |