基于文件的联系人管理
bguo的Python项目详细描述
基于文件的联系人管理
概念
每个联系人对应于bguo目录中的单个文件。 应在此目录中编辑联系人信息,然后导出 以供其他程序使用的各种输出格式。他们也可以 大致导入到此目录,但您必须校对 结果:进口商的目的是一次性进口,而不是 与其他程序定期同步。
就我们而言,联系人是一个名字的东西。 人员、邮件列表和组织都可以 联络。bguo没有对联系人进行分组的特殊功能。
bUO联系人文件格式
下面是一个联系人文件的示例。
name: Thomas Levine email: sngmscrmrchroh@thomaslevine.com phone: 8835 1000 990 2082 x-favorite-color: pink
联系人文件格式与电子邮件类似 (RFC-5322互联网消息) 除了以下变化。
- 标题名称不同。(见下文。)
- 换行符不需要包含回车符; 可以用crlf或lf断线。
- 标题中可以包含非ascii数据;mime编码的单词语法是 可选。
- 消息正文必须为空。
联系人文件可以包含以下任何不区分大小写的字段 任何以“x-”或“x-”开头的字段。
- 名称
- 姓名、邮件列表、组织和C.
- 拉丁语名称
- 与“name”相同,但在输出不接受“name”时使用 格式化,因为它使用不同的字母表
- 电话
- 电话号码
- 电子邮件*
- 电子邮件地址
- 进给*
- 新闻提要地址,例如rss或atom提要
- 网络
- 网址
- 发布
- 邮政地址
如果存在任何其他字段,bguo将报告错误。 标有“*”的字段可以包含多次; 其他字段只能包含一次。
用法
安装
pip3 install bguo
seltzer导入程序有一个特殊的依赖项。如果你需要的话 导入程序,按此方式安装以确保满足依赖项。
pip3 install ‘bguo[seltzer]’
帮助
bguo -h
示例与包一起分布在“examples”目录中。 pip下载包,但您可以下载包 from PyPI,你可以下载 开发版本 from thomaslevine.com。
下面是如何下载开发版本并运行示例的方法。
wget https://thomaslevine.com/scm/bguo/tarball/bguo.tar.gz tar xzf bguo.tar.gz cd bguo/examples make clean make
支持的格式
bguo只支持我(Tom)使用过的格式。 让我们把格式分成两组。第一组格式 用于与其他软件的特定集成。
- kontel
- Konftel 300IP电话簿文件
- mh
- MH别名文件
- 羊肉
- Muttalias_file
- 新闻服务器
- Newsbeuter~/.newsbeuter/urls
- 塞尔策
- Seltzer CRM成员列表(/?q=members)
- VOIPMS
- VoIP.ms电话簿导出
第二类是通用出口,可能有助于 你自己的出口。
- python(默认值)
- python字符串表示,作为dict列表,每个联系人一个dict
- 自定义
- 您自己的格式,指定为python format string, 使用可以用bguo format子命令检查的字段
格式参数包括联系人文件中的所有原始字段 格式(名称、拉丁名和C)和以下派生字段。
- 电话号码
- 删除非数字字符的“phone”(电话)字段中的电话号码
- 后格式化
- 来自“post”字段的邮政地址,格式为包含在 带有联系人姓名或标识符和斜线的字母 替换为换行符。
对于大多数格式,只支持导入或导出, 不是两者都有。下表对此进行了总结。
Format | Import | Export |
---|---|---|
Konftel | No | Yes |
MH | Yes | Yes |
Mutt | Yes | Yes |
Newsbeuter | Yes | Yes |
Seltzer | Yes | No |
VoIP.ms | Yes | No |
Python | No | Yes |
Custom | No | Yes |
对于导入,命令行progr我希望你从 只有一种格式。要在导出期间合并多个格式, 用bguo.parse中的函数编写一个自定义合并程序。 我曾经用过电子邮件地址(mh)和电话号码(voip.ms); 见examples/merge.py。
导出工作流
让我们把出口分为两类。
- stdout被发送到配置文件。
- stdout直接发送到另一个程序。
前一种类型的示例是mh格式;我运行这样的命令, 当我写邮件的时候,我的联系人也可以使用。
bguo export ./my-contacts mh > ~/mh/aliases
后一种类型的示例是连接通用电话号码 导出到会话初始化协议(SIP)客户端;我可以调用 我的命令如下。
pjsua "$(bguo export ./thomas.levine custom 'sip:{phone-numeric}@paris.voip.ms')"