1

我刚刚编写了一个小的 python 脚本,它可以让我找到我的 google 联系人列表中的所有组,但是由于某种原因,“我的联系人”没有出现在其中。我正在使用 3.0 api,并且 2.0 api 也有类似的问题。以下是Google 2.0 联系人文档中的一个例外。

例如,要确定“我的联系人”组的 ID,您可以检索给定用户的所有组的提要,然后找到具有该子元素的组条目,并获取该组条目的元素的值。

目前,我得到的响应在任何地方都没有 gContact:systemGroup 标记。为了获取特定组的组 ID,我应该如何进行?

我的脚本如下所示:-

user="blah@gmail.com"
pas="blah"
data={"Email":user, "Passwd":pas, "service": "cp", "source":"tester"}
import urllib
data = urllib.urlencode(data)

import urllib2
req = urllib2.Request('https://www.google.com/accounts/ClientLogin', data)
resp = urllib2.urlopen(req)
x = resp.read()

auth=a[-1].split('=')[-1]
req = urllib2.Request('https://www.google.com/m8/feeds/groups/blah@gmail.com/full/', headers={'Authorization':'GoogleLogin auth='+auth})
resp = urllib2.urlopen(req)
x = resp.read()
print x
print "My Contacts" in x
print "gContact:systemGroup" in x

关于如何解决这个问题的一些线索会很棒,谢谢。

4

1 回答 1

2

为什么不直接使用Python 客户端库?它包括一组完全符合您要求的方法。

import gdata.contacts.client
import gdata.contacts.data # you might also need atom.data, gdata.data

gd_client = gdata.contacts.data.ContactsClient(source='eQuiNoX_Contacts')
gd_client.ClientLogin('equinox@gmail.com', '**password**')

feed = gd_client.GetGroups()
    for entry in feed.entry:
        print 'Atom Id: %s' % group.id.text
        print 'Group Name: %s' % group.title.text
        if not entry.system_group:
            print 'Edit Link: %s' % entry.GetEditLink().href
            print 'ETag: %s' % entry.etag
        else:
            print 'System Group Id: %s' % entry.system_group.id

这能解决你的问题吗?在某种程度上,它更干净。如果您仍然遇到以下问题:

...由于某种原因,“我的联系人”没有出现...

然后从文档中:

注意:Feed 可能不包含用户的所有联系人组,因为返回的结果数量存在默认限制。有关更多信息,请参阅使用查询参数检索联系人组中的 max-results 查询参数。

注意:较新的文档包括示例 Python 代码和协议说明;Python 代码帮助我理解通用协议。

于 2011-09-26T19:34:59.720 回答