SimplePie + Tooltip + Flickr = o galerie


Tocmai am scris despre SimplePie şi după acel exemplu banal – de încălzire – m-am gândit să încerc ceva mai complicat. Şi dacă ceea ce veţi vedea în final e doar 20 de linii de cod PHP în fapt m-am dat cu capul de pereţi câteva ore. Problema: nu am mai lucrat niciodată cu API-ul Flickr. Am pornit direct de la URL-ul descris aici şi de la contul Flickr care îmi place mie mult şi am crezut că rezolv totul rapid. M-am ciocnit însă de o problemă care fie e temporară (ceasul rău… şi atunci m-am chinuit degeaba), fie e un bug care necesită cu adevărat un workaround până la rezolvare. Care e problema? Acest feed e cel bun, merge perfect, dar preluat direct în PHP nu dă setul strict ci poze aleatoare de pe Flickr.

imagine

În cele din urmă am făcut un pas intermediar, nu tocmai natural: iau feed-ul şi îl salvez local. Ştiu, ştiu… dar doar aşa a mers! În plus varianta cu salvare locală nu e rea pentru că deschide calea pentru cache-uire (mda, SimplePie are deja un mecanism de cache). Pasul următor, după ce am rezolvat citirea feed-ului cu SimplePie a fost să identific elementele necesare. Din păcate Flickr are un mod nu tocmai inspirat de construire a feed-ului, ceea ce face ca pentru preluarea thumbnail-ului să fie nevoie de căutare cu expresii regulare în descriere. Asta e! După alte minute lungi de încercări am admis că doar aşa se poate şi am capitulat, alegând să folosesc chiar "biblioteca" oferită de SimplePie pentru Flickr aici. Aşa că, după ore de experimente nu tocmai reuşite, am ajuns la un cod foarte scurt. Ca afişarea să fie cu stil m-am îndreptat spre un efect mai vechi (vezi Easiest Tooltip and Image Preview Using jQuery). Ce a ieşit vedeţi aici (mutaţi mouse-ul peste imagini). Codul PHP este următorul.

[PHP]require ‘simplepie.inc’;
require ‘flickr.inc’;
$content = file_get_contents(‘http://api.flickr.com/services/feeds/photos_public.gne?id=49746597@N00&lang=en-us&format=rss_200’);
$fname = "flickr.xml";
$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);
$feed = new SimplePie(‘flickr.xml’);
echo ‘<img src=’.$feed->get_image_url().’ align=absmiddle>’;
echo ‘<strong>’.$feed->get_title().'</strong><br>’;
$i=0;
foreach ($feed->get_items(0,18) as $item){
$url = lightbox::find_photo($item->get_description());
$title = lightbox::cleanup($item->get_title());
$full_url = lightbox::photo($url, ‘medium’);
$thumb_url = lightbox::photo($url, ‘square’);
echo ‘<a href="’.$full_url.’" class="preview" title="’.$title.’"><img src="’.$thumb_url.’" border="0"></a>’;
if((++$i)%6==0)
echo ‘<br>’;
}[/PHP]

Scurte explicaţii: pentru a afla adresa feed-ului (care e chiar API-ul) mergeţi la contul dorit şi vedeţi jos iconiţia portocalie de RSS (copiaţi adresa legăturii). Puteţi în loc de id=… să folosiţi ceva de genul tags=sunset. Am scris conţinutul feed-ului într-un fişier (flickr.xml), pe care apoi l-am încărcat cu SimplePie. De aici a mai rămas fructificarea via SimplePie şi „biblioteca” SimplePie pentru Flickr. Banal, nu? Extragerea imaginilor combinată cu ceva JavaScript plăcut vizual poate să conducă la galerii interesante! Cu efort destul de mic…


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (1 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *