Группа "Мои контакты" - PullRequest
       10

Группа "Мои контакты"

1 голос
/ 26 сентября 2011

Я только что написал небольшой скрипт на python, который собирает все группы в моем списке контактов Google, но по какой-то причине «Мои контакты» не отображаются в этом списке. Я использую API 3.0, и у меня тоже были проблемы с API 2.0. Ниже приведено исключение, взятое из документации Контакты Google 2.0 .

Например, чтобы определить идентификатор группы «Мои контакты», вы можете получить фид всех групп для данного пользователя, затем найти запись группы, которая имеет подэлемент, и принять значение элемента этой записи группы. *

В настоящее время полученный ответ нигде не содержит тега gContact: systemGroup. Как мне поступить, чтобы получить идентификатор группы определенной группы?

Мой скрипт, как показано ниже: -

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

Некоторые подсказки о том, как я могу решить эту проблему, были бы великолепны, спасибо.

1 Ответ

2 голосов
/ 26 сентября 2011

Почему бы не использовать клиентскую библиотеку 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

Решает ли это вашу проблему? Это чище, в некотором смысле. Если у вас все еще проблемы с:

... почему-то "Мои контакты" не отображаются ...

затем из документации:

Примечание. Фид может содержать не все группы контактов пользователя, поскольку по умолчанию количество возвращаемых результатов ограничено. Для получения дополнительной информации см. Параметр запроса max-results в Получение групп контактов с использованием параметров запроса .

Примечание: более новая документация включает пример кода Python вместе с пояснением протокола; код Python помогает мне обернуться вокруг общего протокола.

...