2010-11-14 39 views
0

Voici le code:Je ne suis pas en mesure d'accéder à certaines propriétés GData les contacts, telles que le sexe

def fetch_feed(self): 
     client = gdata.contacts.service.ContactsService() 
     client.ClientLogin(username, password) #Will change to AuthSub later. 
     query = gdata.contacts.service.ContactsQuery() 
     query.max_results = 3000 
     feed = client.GetContactsFeed(query.ToUri()) 
     memcache.set('feed',feed, 3600) 
     return feed 

feed = self.fetch_feed() 
self.PrintFeed(feed) 

def PrintFeed(self, feed): 
     for entry in feed.entry: 
      print entry.* #example... i can access properties such as entry.title, entry.id, entry.updated, but can't access a whole lot more. 

Qu'est-ce que je fais mal, ou qu'est-ce que je ne fais pas du tout? J'ai posté la même question sur le forum Apps API, juste pour clarifier les choses.

EDIT Voici ce que j'importe:

from google.appengine.api import memcache, users 
from google.appengine.ext import db, webapp 
from google.appengine.ext.webapp import util 
import atom 
import atom.url 
import datetime 
import gdata.alt.appengine 

import gdata.contacts 
import gdata.contacts.client 
import gdata.contacts.data 
import gdata.contacts.service 
import gdata.client 
import gdata.service 
import settings 

EDIT2: L'erreur que je suis arrivé après avoir corrigé la faute de frappe QRY:

Traceback (most recent call last): 
    File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 511, in __call__ 
    handler.get(*groups) 
    File "C:\etrebug\main.py", line 55, in get 
    feed = self.fetch_feed() 
    File "C:\etrebug\main.py", line 67, in fetch_feed 
    feed = client.get_contacts(qry) 
    File "C:\etrebug\gdata\contacts\client.py", line 194, in get_contacts 
    desired_class=desired_class, **kwargs) 
    File "C:\etrebug\gdata\client.py", line 635, in get_feed 
    **kwargs) 
    File "C:\etrebug\gdata\client.py", line 276, in request 
    version=get_xml_version(self.api_version)) 
    File "C:\etrebug\atom\core.py", line 516, in parse 
    return _xml_element_from_tree(tree, target_class, version) 
    File "C:\etrebug\atom\core.py", line 525, in _xml_element_from_tree 
    if target_class._qname is None: 
AttributeError: 'ContactsQuery' object has no attribute '_qname' 

Répondre

6

Vous pouvez essayer le client V3

client = gdata.contacts.client.ContactsClient() 
client.client_login(usr, passwd, "myscript") 
qry = gdata.contacts.client.ContactsQuery(max_results=3000) 
feed = client.get_contacts(query=qry) 

for entry in feed.entry: 
    # do something with entry 
+0

Je vois. Sur ce lien que j'envoie, il est dit que la librairie Python n'a pas encore été mise à jour vers v3 ... ça m'attriste un peu, mais au moins ça dit que certains champs ne sont pas exposés sur les versions précédentes, ce qui ne se désadresse pas moi. http://code.google.com/intl/pt-BR/apis/contacts/docs/3.0/migration_guide.html –

+2

Oui, l'intégralité de la bibliothèque gdata python n'a pas encore été portée, mais la version actuelle de gdata soutenir cette fonctionnalité. Je l'ai ajouté il y a quelques mois. –

+0

Il me donne une erreur: objet 'ContactsQuery' n'a aucun attribut 'get_contacts' J'ai mis à jour la question avec les importations que j'utilise. –