2013-05-03 57 views
1

我想通过使用查询(使用.Net Google Data API)列出所有可用列表,网页,公告,文件柜中的所有可用列表,网页,公告,文件柜:Google Sites API无法返回不在第一个区块的条目

https://sites.google.com/feeds/content/site/mysite1?kind=filecabinet,listpage,webpage,announcementspage”。

如果有约。 < 500个项目出现在Google网站上,然后它正常工作。能够列出所有可用的页面。

但是,Google协作平台约为。 > 500个项目(包括所有附件,评论,页面等),这个查询只返回那些出现在第一个块中的项目。在这种情况下,下一个块URL为空,因此我无法使用“开始索引”属性查询下一个块,并且未能在此处列出所有可用的页面。

有谁知道如何解决这个问题? 在此先感谢

回答

1

展望同样的问题,我找到了有关Python YouTube API的this question的答案。

内容Feed查询返回单个结果块。您可以使用GetNextLink方法检索下一个块(如果有的话)。这在“查询结果”下的Data API protocol reference中进行了描述。

这是一个Python解决方案(针对Google Apps的Legacy OAuth),它依赖于前面提到的YouTube API问题的答案。

CONSUMER_KEY = 'some_key' 
CONSUMER_SECRET = 'some_secret' 
REQUESTOR_ID = '[email protected]' + CONSUMER_KEY 
DOMAIN = 'some_domain' 

def content_generator(client): 
    content_feed = client.GetContentFeed() 
    while content_feed is not None: 
     for content in content_feed.entry: 
      yield content 
     next_link = content_feed.GetNextLink() 
     if next_link is None: 
      content_feed = None 
     else: 
      content_feed = client.GetContentFeed(next_link.href) 

client = gdata.sites.client.SitesClient(source='some_source', site=SITE, domain=DOMAIN) 
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(CONSUMER_KEY, CONSUMER_SECRET, REQUESTOR_ID) 

for page in content_generator(client): 
    # do something 
    print(page.page_name)