2012-01-21 1 views
0

Как мне получить конкретный альбом из picasa api?picasa api - Как получить конкретный альбом с идентификатором альбома?

В настоящее время я делаю что-то вроде этого:

def album(gd_client, album_id, user): 
    all_albums = albums(gd_client,user) 
    for album in all_albums: 
     if album.service_id == album_id: 
      return album 

Это значит, я все альбомы и отфильтровать тот, мне нужно.

Но должен быть более простой и эффективный способ.

Спасибо!

ответ

2

В Протоколе данных Google версии 2.0 имеется экспериментальная поддержка PartialResponse, которая позволяет фильтровать ответы на сервере, передавая параметр fields.

К сожалению, только Java API поддерживает 2.0, но вы можете легко добавить его в Python API самостоятельно.

+0

Hm ок спасибо, так что нет встроенной функциональности для этого. – thyagx

+0

К сожалению, нет в Python API - это только в Java API. Вы можете легко добавить его, используя [клонирование источника] (http://code.google.com/p/gdata-python-client/source/checkout). –

0

Похоже, вы хотите использовать API «ввода». Вот как я могу получить AlbumEntry для публичного альбома (не хотят иметь дело с AUTH):

base = "https://picasaweb.google.com"; 
user = "101405741057659770470" # myself 
albumid = "6333524051829767505" 
# must be inside of a function to use locals() 
url = "%(base)s/data/entry/api/user/%(user)s/albumid/%(albumid)s" % locals() 

gd_client = gdata.photos.service.PhotosService() 

entry = gd_client.GetEntry(url) 
assert isinstance(entry, gdata.photos.AlbumEntry) 

Похожие в Java:

String baseURL = "https://picasaweb.google.com"; 
String userId = "101405741057659770470" // myself 
String albumid = "6333524051829767505" 
String albumUrl = String.format(
    "%s/data/entry/api/user/%s/albumid/%s", baseURL, userId, albumId); 
// myService is defined here: https://developers.google.com/picasa-web/docs/2.0/developers_guide_java 
AlbumEntry entry = myService.getEntry(new URL(albumUrl), AlbumEntry.class, (DateTime) null /* modified since*/);