如何使用 Python 访问 UbuntuOne 联系人和笔记?

bur*_*rli 7 python development ubuntu-one application-development

我想在我自己的 Python 应用程序中使用 UbuntuOne。我想访问联系人并可能存储其他数据。但是我找不到任何文档或(Python)示例。我怎样才能使用它?

sil*_*sil 12

有许多不同的方法可以处理您的 Ubuntu One 数据,您会很高兴听到的。

如果您的 Python 应用程序在 Ubuntu 上运行

您的联系人数据存储在 Ubuntu One 中,也会同步到您的桌面。联系人数据在桌面沙发存储系统中可用。您可以在文档中找到有关 desktopcouch 的更多信息。作为 Ubuntu One 应用程序开发者计划的一部分,未来几个月将提供更多信息。

简短总结:desktopcouch 是您自己的个人 CouchDB,运行在您的 Ubuntu 桌面上,您的联系人存储在其中。所以你可以使用 desktopcouch.records 库来访问你的联系人:

from desktopcouch.records.server import CouchDatabase
CONTACT_RECORD_TYPE = 'http://www.freedesktop.org/wiki/Specifications/desktopcouch/contact'
db=CouchDatabase('contacts')
contact_names = []
for row in db.get_records(record_type=CONTACT_RECORD_TYPE):
    first_name = row.value.get('first_name', '')
    last_name = row.value.get('last_name', '')
    contact_names.append('%s %s' % (first_name, last_name))
print contact_names
Run Code Online (Sandbox Code Playgroud)

desktopcouch 文档页面中有更多关于如何使用 desktopcouch 数据的示例。联系人的数据格式在此处定义

您可以在桌面沙发上创建您喜欢的任何其他数据库;简单地做

db = CouchDatabase("my_new_db", create=True)
Run Code Online (Sandbox Code Playgroud)

然后使用该数据库;您的新数据库将同步到您的个人云和您的所有机器,您可以在其中存储您想要的任何数据。

如果您的 Python 应用程序没有在 Ubuntu 上运行,或者您想直接在 Ubuntu One 上访问数据

您的数据存储在您自己的个人 CouchDB 中,在 Ubuntu One 的云中以及在您的 Ubuntu 桌面上的 desktopcouch 中。如果您愿意,您可以直接在您的个人云中访问它。为此,您需要熟悉 OAuth。首先,获取 Ubuntu One 的 OAuth 令牌;您可以通过查看密钥环从 Ubuntu 桌面执行此操作。接下来,OAuth 向https://one.ubuntu.com/api/account/签署请求,该请求将返回一些 JSON,包括您的“couchdb_root”,看起来像https://couchdb.one.ubuntu.com/u /abc/efg/12345

然后,您的个人云联系人数据库可在https://couchdb.one.ubuntu.com/u%2Fabc%2Fefg%2F12345%2Fcontacts(这是您的 couchdb_root 末尾带有“联系人”,并且 / 转义到 %2F) . 然后,您可以像使用任何 CouchDB 一样使用它,通过 OAuth 对您的 curl 请求进行签名。CouchDB 指南解释了如何通过 HTTP 使用 CouchDB。

使用笔记有点复杂:笔记的主要存储是 Tomboy 应用程序。Tomboy 会将您的笔记同步到 Ubuntu One,它们可以在您的个人云 CouchDB(一个名为“笔记”的数据库)中使用,并且该“笔记”DB 也会同步到桌面沙发中。但是,如果您的应用程序在 Ubuntu 桌面上运行,我建议您使用 Tomboy 的综合 D-Bus API 直接在源代码处理您的笔记,而不是编辑 desktopcouch 副本并等待这些更改同步到 Ubuntu One,然后再到 Tomboy!Ars Technica 的这篇文章解释了一些如何做到这一点,Tomboy 团队是可爱的人,他们会渴望提供帮助。

我们 (Ubuntu One) 正在构建一个应用程序开发人员程序,以便更轻松地回答此类问题并提供指导和文档;我很想听听您打算做什么以及我如何让您更轻松,所以请给我留言(stuart.langridge @ canonical.com,或http://kryogenix.org/contact)如果我可以提供帮助,或者向 askubuntu 发布更多问题!