Librairie Php simple pour l'Api Flickr
J'ai écrit une librairie pour accéder à l'API Flickr (pour ceux qui sorte du fin fond de la jungle et qui n'en ont jamais entendu parler, je vous laisse y jeter un oeil) qui vous permettra d'accéder à l'ensemble des fonctionnalités distantes qu'offre le service.
Certain me diront qu'ils en existent une multitude sur le net et ils auront raison, enfin, presque, car, aucune de celles que j'ai trouvée ne me convenaient, bien trop complexe pour certaines, plutôt sales pour d'autres, j'ai donc décidé d'écrire la mienne avec comme seules contraintes, faire quelque chose de simple et qui fonctionne...proprement.
L'archive contient un fichier test.php, en voici le contenu :
<?php
/* Minimalist class for accessing Flickr web services
hugo arobase digitalspirit dot org
c.rincheval, 2007
*/
require 'flickr.class.php';
define('FLICKR_KEY', 'YOUR_FLICKR_KEY');
define('FLICKR_SECRET', 'YOUR_FLICKR_SECRET');
$flk = new flickr(FLICKR_KEY, FLICKR_SECRET);
$args = array();
$rsp = $flk->request('flickr.photos.getRecent', $args);
if ($rsp['stat'] == 'ok') {
$url_img = 'http://farm%s.static.flickr.com/%s/%s_%s%s.jpg';
foreach ($rsp['photos']['photo'] as $photo) {
echo '<img src="'.sprintf($url_img, $photo['farm'], $photo['server'], $photo['id'], $photo['secret'], '_s').'" alt="" />';
}
}
?>
Cet exemple va chercher sur le site de Flickr les photos les plus récentes et les affichent directement sur la page.
Comme vous pouvez le voir, c'est relativement simple et vous pouvez, comme je l'ai fait, étendre ces fonctionnalités en dérivant de cette classe.
Vous trouverez ci-joint l'archive contenant les sources de la classe, le fichier d'exemple et le fichier de license GNU/GPL.



Commentaires
Tout nouveau.
j'ai un :
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in flickr.class.php on line 51
Comment faire?
C'est une librairie en Php5, si tu veux qu'elle fonctionne aussi en Php4, retire le "public" en début de ligne 51 et le "static" en début de ligne 110...
@++
Question : Comment afficher le nom du propriétaire de l'image associée (pour des questionde License Creative commons ????
Je me prends la tete dessus et ne trouve point !
Merci de votre aide !
Sapristi
Bonjour sapristi
En fait, la méthode getRecent renvoie le strict minimum mais il existe un paramètre nommé extras qui permet de spécifier des paramètres supplémentaires à renvoyer. ( -> http://www.flickr.com/services/api/... )
Donc, en ajoutant le paramètre extras avec comme valeur 'owner_name', ça devrait faire l'affaire :
$args = array('extras' => 'owner_name');
Voilà
@++
Salut salut !
Déjà merci pour cette petite classe bien pratique, légère et efficace !
J'ai quand même rencontré un problème, du à mon hébergement mutualisé qui interdisait l'utilisation de file_get_contents() (rendant donc tout le script inutilisable).
J'ai contourné le problème en utilisant la bibliothèque curl et ajouter (à la ligne 93) :
$ch = curl_init();
$timeout = 10; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
et finalement remplacé :
$this->last_response = file_get_contents($url);
par :
$this->last_response = $file_contents;
C'est une solution alternative plutôt efficace, car curl est plus souvent activé que file_get_contents() autorisé sur les serveurs mutualisés de ce type...
Voila, si ca peux aider certains qui ont rencontrés ce problème, ben tant mieux ! :D
Merci pour l'astuce !
Salut
En premier test, je trouve ta classe "rapide", je suis en train de tester toutes sortes d'intégrations avec flickr et la classe phpFlickr est très lente, je ne sais pas encore trop pourquoi mais je vais continuer à tester, en tout cas merci !
Bonjour
je viens de découvrir votre librairie flickr qui parait très intéressante.
j'ai fais quelques essais qui sont concluants.
j'ai pourtant un problème pour accèder a mes photos en accès 'privé'
Je ne vois pas très bien comment fonctionne la procédure d'authentification
serait 'il possible d'avoir le même exemple que celui que vous fournissez mais se rapportant à des photos en accès privé.
Merci si cela est possible.
Teffius
Bonjour Teffius,
Appel la méthode getLoginLink avec tous les paramètres qui vont bien, elle va te retourner une url, va sur cette url qui te demander un login/pass afin de d'identifier, si je ne dis pas de betises, une fois, authentifier, flickr te redirige vers ta page (referrer) et te donne un token dans l'url.
Compris ?
@++
Voici ce que j'utilise pour afficher les 6 dernières photos d'un membre par rapport a son username :
require 'flickr.class.php';
define('FLICKR_KEY', 'KEY');
define('FLICKR_SECRET', 'SECRET');
$flk = new flickr(FLICKR_KEY, FLICKR_SECRET);
$args = array('username' => 'Ici on met le username flickr');
$rsp = $flk->request('flickr.people.findByUsername', $args);
//my$id recupère l'id au format flickr
$my_id=($rsp['user']['nsid']);
$args = array('user_id' => $my_id,'per_page' => '6','page' => '1');
$rsp = $flk->request('flickr.people.getPublicPhotos', $args);
$url_img = 'http://farm%s.static.flickr.com/%s/...
foreach ($rsp['photos']['photo'] as $photo) {
echo '<img src="'.sprintf($url_img, $photo['farm'], $photo['server'], $photo['id'], $photo['secret'], '_s').'" alt="" />';
}
Voilà j'espère que cet portion de code pourra être utile à quelqu'un et encore un gros merci à Hugo pour sa librairie.
Bonjour Mister Ed,
Merci pour le bout de code, ça en dépannera surement...
@++
Bonjour,
je voudrais faire un lien simple entre mon site web perso et mon compte flickr. J'ai récupéré cette libraire et testé avec le test.php fourni. J'obtiens le message d'erreur suivant (j'ai just viré les clés):
Warning: file_get_contents(http://api.flickr.com/services/rest...) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in D:\My Documents\My Website\Flickr\flickr.class.php on line 93
Fatal error: Maximum execution time of 60 seconds exceeded in D:\My Documents\My Website\Flickr\flickr.class.php on line 93
Est-ce un pb de la lib, chez Flickr, autre ?
Merci pour votre aide.
Christophe
Bonjour,
ça ressemble à un problème de connection sur le service Flickr, as-tu réessayer ultérieurement de t'y connecter ?
N'y a t-il pas de firewall qui pourrait bloquer le passage ?
++
Bonjour,
merci pour la réponse. Je viens de réessayer... ca marche nickel.
Je vais essayer maintenant d'aller plus loin en exploitant les méthodes de l'API.
Merci encore.
Christophe.