Search code examples
phpimageapifeedpicasa

php picasa api show large image


Ok so far I have been able to show thumbnails from user/album using the google feed. Everything displays ok, except when I want to show the thumbnail image larger. I can't seem to get the large image to show, not sure what to use here..here's my code:

<?php
$user = '100483307985144997386';
$albumid = '5092093264124561713';
$picasaURL = "http://picasaweb.google.com/$user/";
$albumfeedURL = "http://picasaweb.google.com/data/feed/api/user/$user/albumid/$albumid";

$sxml_album = simplexml_load_file($albumfeedURL);
echo '<table cellpadding="3" cellspacing="3">';
echo "<tr>";
$i = 0;
foreach( $sxml_album->entry as $album_photo )
{   

   //$title = $album_photo->title;
    $summary = $album_photo->summary;
    // Write thumbnail to file
    $media = $album_photo->children('http://search.yahoo.com/mrss/');
    $thumbnail = $media->group->thumbnail[1];

    $gphoto = $album_photo->children('http://schemas.google.com/photos/2007/');
    $linkName = $gphoto->group->attributes()->{'url'};    
    // Direct address to thumbnail
    $thumbAddy = $thumbnail->attributes()->{'url'};    
    if($i%4==0) { echo '</tr><tr>'; } 

    echo '<td style="width:90px; overflow:hidden; word-wrap:break-word; font-size:12px;">';
    echo '<a class="fancybox-buttons" data-fancybox-group="button" href="'. $linkName . '"><img src="'. $thumbAddy . '" /></a>';         
    echo '<p>'. $summary . '</p></td>';
    $i++; 
}

echo '</tr></table>';

Solution

  • the feed/api for each photo contains 3 thumbs and a large picture which are accessible on the native http rest api in the following:

    "media$thumbnail":[
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s72/DSC01612.JPG",
    "height":72,
    "width":48
    },
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s144/DSC01612.JPG",
    "height":144,
    "width":96
    },
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s288/DSC01612.JPG",
    "height":288,
    "width":192
    }
    ],
    
    LARGE ONE:
    
    "media$group":{
    "media$content":[
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/DSC01612.JPG",
    "height":512,
    "width":341,
    "type":"image/jpeg",
    "medium":"image"
    } 
    

    similar reference

    When coding clients to an underlying REST api it can often help to have a good grasp on the native protocol and what character streams ( request / response ) are on the wire. Then you adapt PHP/Curl to what is there in http protocol.

    The google oauth playground is a great tool for testing the back and forth dialogs involved in development against any of the gdata apis ( including picasa )...

    playground

    here is the playground request code to get the thumbs and the large pic for a given album/photo...

    GET //data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?fields=media%3Agroup%2Fmedia%3Athumbnail%5B%40url%5D%2Cmedia%3Agroup%2Fmedia%3Acontent%5B%40url%5D&alt=json HTTP/1.1
    
    
    Host: picasaweb.google.com
    Authorization: OAuth ya29.AHES6ZT123y3Y5Cy3rILYg4Ah4q....
    HTTP/1.1 200 OK
    status: 200
    gdata-version: 1.0
    content-length: 756
    x-xss-protection: 1; mode=block
    content-location: https://picasaweb.google.com//data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?fields=media%3Agroup%2Fmedia%3Athumbnail%5B%40url%5D%2Cmedia%3Agroup%2Fmedia%3Acontent%5B%40url%5D&alt=json
    x-content-type-options: nosniff
    set-cookie: _rtok=a1p2m3PiHFkc; Path=/; Secure; HttpOnly, S=photos_html=sX3EHuLxGEre_OMvR0LTPg; Domain=.google.com; Path=/; Secure; HttpOnly
    expires: Wed, 16 May 2012 03:23:51 GMT
    vary: Accept, X-GData-Authorization, GData-Version, Cookie
    x-google-cache-control: remote-fetch
    -content-encoding: gzip
    server: GSE
    last-modified: Fri, 06 Jan 2012 17:57:33 GMT
    via: HTTP/1.1 GWA
    cache-control: private, max-age=0, must-revalidate, no-transform
    date: Wed, 16 May 2012 03:23:51 GMT
    access-control-allow-origin: *
    content-type: application/json; charset=UTF-8
    x-frame-options: SAMEORIGIN
    

    and the response to the above run thru a prettyprint...

    "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"
    }
    ],
    "media$thumbnail":[
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s72/DSC01612.JPG",
    "height":72,
    "width":48
    },
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s144/DSC01612.JPG",
    "height":144,
    "width":96
    },
    {
    "url":"https://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/s288/DSC01612.JPG",
    "height":288,
    "width":192