基于CardDAV的通讯录工具
项目描述
pyCardDAV 是一个简单易用的 CardDAV 命令行客户端。它内置了对 mutt 的 query_command 的支持,但也可以独立(以及与其他 MUAs)很好地工作。
pyCardDAV 由 pycardsyncer 组成,这是一个将您的 CardDAV 资源同步到本地数据库的程序,以及 pc_query,这是一个查询本地数据库的程序。pyCardDAV 是一些丑陋的 python 代码(实际上,它现在不再是那么丑陋了…),它将 vobject、lxml、requests 和 pysqlite 结合在一起。
特性
(或更确切地说:限制)
pyCardDAV 只针对 davical、owncloud 和 sabredav 进行了测试
pyCardDAV 可以直接从 mutt 导入发件人的地址
pyCardDAV 可以备份并从/到 .vcf 文件导入
pyCardDAV 可以直接从 mutt 添加电子邮件地址
pyCardDAV 只支持 VCard 3.0
pyCardDAV 目前还不兼容 Python 3
反馈
请提供反馈,如果 pyCardDAV 对您有效,或者更重要的是,如果它不起作用。您可以通过电子邮件 pycarddav (at) lostpackets (dot) de、通过 jabber/XMPP geier (at) jabber (dot) lostpackets (dot) de 或通过 github 联系我。
安装
您可以从上面的下载链接或从git(在github上)下载pyCardDAV。然后通过执行python setup.py install来安装pyCardDAV。如果您想更有冒险精神,您始终可以选择github上的develop分支,它应该总是处于可用的状态。pyCardDAV还可在pypi上找到,并可以通过pip install pycarddav或easy_install pycarddav来安装。
复制并编辑提供的pycard.conf.sample文件(默认位置为~/.config/pycard/pycard.conf)。如果您不想在配置文件中将密码以明文形式存储,pyCardDAV将在同步时询问密码。
请确保您已安装sqlite3(通常默认可用)、vobject、lxml(>2)、requests(>0.10)、urwid(>0.9)pyxdg。Python 2.6的用户还需要安装argparse。
pyCardDAV至今已在FreeBSD、NetBSD、Debian和Ubuntu的最新版本中成功测试,使用Python 2.6和2.7,与davical 0.9.9.4 - 1.0.1(较新版本应该也可以,但0.9.9.3及更早版本似乎无法工作)、owncloud和sabredav进行了测试。
用法
pyCardDAV由三个脚本组成,pycardsyncer用于将本地数据库与服务器同步,pc_query用于与本地数据库交互,pycard-import用于从mutt导入电子邮件地址。
执行pycardsyncer以将您的地址同步到本地数据库。您可以使用以下方式测试pc_query:
% pc_query searchstring
默认情况下,pyCardDAV只打印与搜索字符串匹配的联系人的名称、电子邮件地址和电话号码,要查看所有vCard属性,请使用“-A”选项。
对于与mutt等工具的用法,pyCardDAV还可以以mutt友好的格式(使用“-m”选项)打印仅电子邮件地址。编辑您的mutt配置,以便查询命令使用pc_query
.muttrc中的示例
set query_command="/home/username/bin/pc_query -m '%s'"
当前版本具有实验性写入支持。如果您想测试此功能,请首先确保您已经备份了您的数据(但请不要仅依靠pc_query –backup进行此操作),然后您可以在您的配置文件中添加以下行
write_support = YesPleaseIDoHaveABackupOfMyData
(需要将其放入您想要启用写入支持的每个Account部分)。
您还可以导入、删除或备份单个名片(备份也适用于整个收藏夹,但请不要仅依靠它)。有关如何使用这些和更多选项的说明,请参阅pc_query –help。
pycarddav可以配置为使用不同的CardDAV账户,有关详细信息,请参阅示例配置。可以使用-a account_name指定一个账户,以在所有三个实用工具中使用。如果没有选择账户,所有搜索和同步操作将使用所有配置的账户,而在添加名片时将使用第一个配置的账户。
密钥环支持
pycarddav支持keyring(版本>=3.0)。要使用它,您需要通过以下方式将密码添加到密钥环中:
keyring set pycarddav:$account $username
其中$account是配置文件中配置的账户名称,$username是相应的用户名(然后不要为该账户配置密码)。有关配置keyring的更多详细信息,请参阅其文档。
从mutt导入地址
您可以直接将mutt的发送者地址添加到pyCardDAV中,要么将其添加到现有联系人中,要么创建一个新的联系人。如果启用了写入支持,它们将在下一次同步时上传到服务器。
.muttrc中的示例
macro index,pager A "<pipe-message>pycard-import<enter>" "add sender address to pycardsyncer"
SSL
如果您使用SSL与CardDAV服务器交互(您应该这么做),并且您没有操作系统供应商信任的CA签发的证书(如自签名证书或由CAcert签发的证书),您可以设置verify为CA根文件路径(必须是pem格式)。如果您不想进行任何证书检查,将verify设置为false以禁用任何ssl证书检查(这不被推荐)。
冲突解决
在发生冲突编辑的情况下(本地VCard在远程VCard也发生变化时更改),将通过pycarddav通过覆盖本地VCard以使用远程VCard来“解决”(这意味着在这种情况下会丢失本地编辑)。更频繁地同步可以防止这种情况。
其他信息
目前,没有值的VCard属性不会显示。
此外,您应该能够使用pyCardDAV的CardDAV实现用于其他项目。请参阅pycarddav/carddav.py中的CardDAV类。
根据RFC 6352,pyCardDAV导入或更改的所有VCard将自动获得一个随机UID(如果它们还没有的话),因为一些CardDAV服务器,例如Owncloud,需要这些。
Debian Wheezy 快速入门
apt-get install python-requests python-vobject python-pytest python-urwid python-lxml python-pyxdg sudo python setup.py install mkdir -p ~/.config/pycard chmod 700 ~/.config/pycard cp pycard.conf.sample ~/.config/pycard/pycard.conf
许可证
pyCardDAV遵循Expat/MIT许可证发布
版权所有 (c) 2011-2014 Christian Geier和贡献者
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由合同、侵权或其他方式引起的,与软件或软件的使用或其他交易有关。
项目详情
pyCardDAV-0.7.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a86bca36e361ce194d5fb49295f1ad1b0ed4a4c0759f3d40f8703b1d2fcb732b |
|
MD5 | 65e1f0bfc68369bb95c1b5519265cb9c |
|
BLAKE2b-256 | da2316d230ab5ce12ead477fd8912d783219a72cfff3eb14150e0dd4352e4c8d |