Где находится полноразмерное изображение в запросе GData.Photos?

Я запрашиваю галерею Picasa и, когда копаюсь в возвращаемых записях, я не могу найти полноразмерное изображение. Я могу видеть только намного меньшее, измененное изображение (data[0].Content.AbsoluteUri). Я знаю, что Google сохраняет полноразмерное изображение, потому что я вижу его при просмотре своей галереи Picasa в Интернете. Где находится полноразмерное изображение?

var picasaService = new PicasaService("Gallery");

var photoQuery = new PhotoQuery(PicasaQuery.CreatePicasaUri("GOOGLEUSERNAME", "GALLERYID"));
var photoFeed = picasaService.Query(photoQuery);

var data = photoFeed.Entries;

2 ответа

Решение

короткий ответ:

media: group / media: content [@url] путь в запросе, чтобы получить запись gdata photo из сервиса Picasa GData, содержащую нужную ссылку.

Более длинный ответ:

  1. интерактивно запросить API Gdata для picasa, используя игровую площадку oauth \
  2. https://code.google.com/oauthplayground и выберите Picasa из списка и получите
  3. кнопка авторизации... затем разрешить доступ, и вы можете запросить API, используя форму
  4. сделать запрос на URI ENTRY нужной фотографии (ваш... пользователь /.. / albumid.. / photoid)
  5. проверить содержимое media: group / media: content [@url] образец ниже
  6. URI для большой фотографии - это значение атрибута url в приведенном выше выражении
  7. примерное значение для одной из моих фотографий в Picasa
  8. URL =https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/DSC01612.JPG

Используя площадку oauth 2.0 для запроса, чтобы получить запись одной из моих фотографий...

Request:
GET /data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?alt=json

Примечание: отфильтруйте ответ, используя http://json.parser.online.fr/

Response: 

"media$group":{
"media$content":[
{
"url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/DSC01612.JPG",
"height":512,
"width":341,
"type":"image/jpeg",
"medium":"image"
}

Ссылка на большую фотографию, которую вы хотите, находится в атрибуте url выше...

Используя тег "fields=", вы можете напрямую получить ссылку, как показано ниже: req/ resp из gdata...

GET /data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?alt=json&fields=media%3Agroup%2Fmedia%3Acontent%5B%40url%5D

{
"version":"1.0",
"encoding":"UTF-8",
"entry":{
"xmlns":"http://www.w3.org/2005/Atom",
"xmlns$media":"http://search.yahoo.com/mrss/",
"media$group":{
"media$content":[
{
"url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/DSC01612.JPG",
"height":512,
"width":341,
"type":"image/jpeg",
"medium":"image"
}
]
}
}
}

Скрытым в документации можно указать размер изображений в ленте. Это использует параметр "imgmax":

https://developers.google.com/picasa-web/docs/2.0/reference

Который может иметь значение, установленное на "d", для запроса полноразмерных изображений

Это не поддерживается напрямую в API C#, но вы можете достичь желаемого результата, используя поле "extraParameters" в объекте PhotoQuery.

Ваш код становится:

var picasaService = new PicasaService("Gallery");

var photoQuery = new PhotoQuery(PicasaQuery.CreatePicasaUri("GOOGLEUSERNAME", "GALLERYID"));
// add the extra parameter to request full size images
photoQuery.ExtraParameters = "imgmax=d";

var photoFeed = picasaService.Query(photoQuery);

var data = photoFeed.Entries;
Другие вопросы по тегам