Utiliser ses albums photos picasa sur son site perso

Soyez le premier à donner votre avis sur cette source.

Vue 15 693 fois - Téléchargée 622 fois

Description

Permet d'aller rechercher ses albums photos pour les afficher sur son site.
Permet de récupérer la liste des albums, la liste des photos, les url (google) des photos et des miniatures.

Source / Exemple :


Classe Picassa : 
/**

  • Fonction permettant d'utiliser l'album photo de Picassa
  • @author Ryo Sensei
  • @version 1.0
  • /
class Picassa { var $client; /**
  • Permet d'afficher une photo en grand, et les miniatures en dessous pour la navigation
  • @param unknown_type $photoId
  • /
function showPhoto($photoId,$album){ ?> <div style="width:90%;margin-left:auto;margin-right:auto;margin-top:20px;text-align:center;border:1px solid blue;"> <img src="<?echo$photoId?>?imgmax=512"> </div> <div style="width:90%;margin-left:auto;margin-right:auto;margin-top:2px;text-align:center;border:1px solid red;"> <table style="width:100%;"><tr> <? $list = $this->getPhotos($album); foreach($list as $k=>$photo){ if($photo["url"] == $photoId){ $key = $k; } } if(($key-1)<0)$key=1; for($i=$key-2;$i<=$key+2;$i++){ if(!isset($list[$i]))continue; echo "<td><center><a href=?page=book&album=$album&photo=".$list[$i]["url"]."> <img src=".$list[$i]["thumbnail"]."> </a></center></td>"; } ?> </tr></table> </div> <? } /**
  • Constructor
*
  • @param unknown_type $client
  • @return Picassa
  • /
function Picassa($client){ $this->client = $client; } /**
  • Retourne dans un tableau la liste des albums
*
  • @param unknown_type $client
  • @return array=>array(
  • [text] => titre de l'album
  • [thumbnail] => image de l'album
  • [albumId] => identifiant de l'album
  • )
  • /
function getListAlbums($admin = false){ $client = $this->client; $gp = new Zend_Gdata_Photos($client, "Google-DevelopersGuide-1.0"); try { $userFeed = $gp->getUserFeed("default"); foreach ($userFeed as $userEntry) { if(!$admin && $userEntry->gphotoAccess->text == "private")continue; //print_r($userEntry); $list[] = array("text"=>$userEntry->title->text, "thumbnail"=>$userEntry->mediaGroup->thumbnail[0]->url, "albumId"=>$userEntry->gphotoName->text); } } catch (Exception $e) { echo "Error: " . $e->getMessage() . "<br />\n"; } return $list; } /**
  • Fonction permettant de récupérer la liste des photos d'un album
*
  • @param unknown_type $album titre de l'album (identifiant)
  • @param unknown_type $client
  • @return array (
  • array(
  • [url] => url de la photo (version original)
  • [titre] => titre de la photo (nom)
  • [thumbnail] => miniature de la photo
  • )
  • )
  • /
function getPhotos($album){ $client = $this->client; $album = str_replace("_"," ",$album); $gp = new Zend_Gdata_Photos($client, "Google-DevelopersGuide-1.0"); $query = $gp->newAlbumQuery(); $query->setUser("default"); $query->setAlbumName($album); $albumFeed = $gp->getAlbumFeed($query); foreach ($albumFeed as $albumEntry) { //print_r($albumEntry);die; //$photo["url"] = $albumEntry->mediaGroup->content[0]->url; $mediaContentArray = $albumEntry->getMediaGroup()->getContent(); $photo["url"] = $mediaContentArray[0]->getUrl(); $photo["titre"] = $albumEntry->title->text; $photo["thumbnail"] = $albumEntry->mediaGroup->thumbnail[0]->url; $list[] = $photo; } return $list; } function randomPhoto(){ $gp = new Zend_Gdata_Photos($this->client, "Google-DevelopersGuide-1.0"); $query = $gp->newUserQuery(); // indicate the user's feed to retrieve $query->setUser("default"); // set to only return photos // the default kind value for a user feed is to include only albums $query->setKind("photo"); $query->setMaxResults("1"); try { // we're passing null for the username, as we want to send // additional query parameters generated by the UserQuery class $userFeed = $gp->getUserFeed(null, $query); // because we specified 'photo' for the kind, only PhotoEntry objects // will be contained in the UserFeed foreach ($userFeed as $photoEntry) { echo "<img src=\"".$photoEntry->mediaGroup->thumbnail[2]->url."\" width=100%>"; } } catch (Zend_Gdata_App_HttpException $e) { echo "Error: " . $e->getMessage() . "<br >\n"; if ($e->getResponse() != null) { echo "Body: <br />\n" . $e->getResponse()->getBody() . "<br />\n"; } // In new versions of Zend Framework, you also have the option // to print out the request that was made. As the request // includes Auth credentials, it's not advised to print out // this data unless doing debugging // echo "Request: <br />\n" . $e->getRequest() . "<br />\n"; } catch (Zend_Gdata_App_Exception $e) { echo "Error: " . $e->getMessage() . "<br />\n"; } } } Classe d'init : function init(){ require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_Photos'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_AuthSub'); include $PATH."config.php"; $serviceName = Zend_Gdata_Photos::AUTH_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($username, $pass, $serviceName); return $client; } Fichier de config : $username = "[id]"; $pass = "[pass]";

Conclusion :


Exemple ici : www.Sarl-varlet.com?page=book

Besoin de Zend pour fonctionner : dispo ici : http://framework.zend.com/download

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

pj27
Messages postés
13
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
7 juillet 2008
-
C'est pas trop mal fait, j'aime bien le système.
Source commentée, un Html propre, le PHP a l'air de l'être aussi... Bon boulot ;)
cs_spoonisback
Messages postés
72
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
5 février 2010
-
Je dis peut-être une bêtise ,mais je sais pas si ça se fais bien de mettre du HTML directement dans ta fonction (fonction ShowPhoto) avant le constructeur !!

Sinon j'ai parcouru rapidement ca n'as pas 'air mal...à tester !
RyoSensei
Messages postés
8
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
29 décembre 2008
-
L'ordre de tes fonctions n'a pas d'importance il me semble.
C'est vrai que j'aurais pus épurer un peu, j'ai mis le code directement comme je l'ai utilisé pour moi, il faut je pense l'adapter pour les besoins personnels.
Je vais plus tard ajouter les fonctions pour ajouter ou supprimer les photos!
Merci
aKheNathOn
Messages postés
285
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013
-
c'est bien, l'init aurais pû être une fonction de la classe en mode static, et dommage de passer par Zend car cela veut dire que ton code ne fonctionnera que si zend est déployé.

bonne continuation, akh
kotif
Messages postés
34
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
27 avril 2009
-
dsl c nul

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.