Flickr.com API - Wyszukiwarka zdjęć
14 July 2008
Comments
flickr.com to serwis, w którym można umieszczać własne zdjęcia. Obecnie jest ich bardzo dużo i łatwo znaleźć tam poszukiwane, ciekawe grafiki. Dodatkowej wyjątkowości temu serwisu przysparza pełne API (dokumentacja) umożliwiające integrację komponentów flickr.com ze stronami www czy zwykłymi aplikacjami komputerowymi.By korzystać z API flickr.com musimy zarejestrować się i wygenerować klucz API (za darmo, tutaj). Gdy go mamy możemy przystąpić do dzieła.
Flickr Api w PHP
Istnieje kilka wrapperów w PHP:- PEAR::Flickr_API
- phpflickr
- phickr - PHP5
- Flickr API Parser - PHP5, moja klasa
W poniższym warsztacie wykorzystam kod mojej klasy z wykorzystaniem funkcji simplexml_load_file dostępnej w PHP5.
Jak to działa?
z Flickr można rozmawiać poprzez trzy formaty: REST, XML-RPC i SOAP. Najprostszy to REST, który dla zapytań sprowadza się do skonstruowania linka zawierającego określone zmienne, a odpowiedzią są dane w postaci XML. Ten format wykorzystamy w naszej wyszukiwarce zdjęć.Podstawy
Utwórz w CI konstruktor flickr.php o kodzie:<?php
class Flickr extends Controller
{
private $api_key;
public function __construct()
{
parent::Controller();
$this->response = array();
$this->api_key = 'TWÓJ KLUCZ API';
}
public function index()
{
echo '<pre>';
print_r(Flickr::_search('kubica'));
}
private function _search($query)
{
$x = simplexml_load_file('http://www.flickr.com/services/rest/?method=flickr.photos.search&text='.$query.'&per_page=20&api_key='.$this->api_key);
$ret['total'] = (int)$x->photos['total'];
foreach($x->photos->photo as $res)
{
$r[] = array('id' => (int)$res['id'], 'title' => (string)$res['title'], 'owner' => (string)$res['owner'], 'secret' => (string)$res['secret'], 'server' => (int)$res['server']);
}
$ret['img'] = $r;
return $ret;
}
}
Metoda _search zwraca tablicę, która zawiera serię tablic z wynikami, oto jedna z nich:
[0] => Array ( [id] => 209252923 [title] => Robert Kubica [owner] => 93661155@N00 [secret] => d83a760613 [server] => 60 )
'http://www.flickr.com/services/rest/?method=flickr.photos.search&text='.$query.'&per_page=20&api_key='.$this->api_key
To właśnie przykład żądanie w formacie REST. Wywołuje on metodę API o nazwie flickr.photos.search (dokumentacja) i przekazuje dodatkowe parametry. Odpowiedź to XML, który jest parsowany przez wspomnianą funkcję, tworzony jest obiekt, z którego wyciągane są interesujące nas dane. Otrzymujemy tablicę, na której łatwiej operować.Jakie są struktury linków na flickr.com ?
Dla nas ważne jak dostać się do zdjęcia na podstawie tych danych. Bezpośredni link do "strony zdjęcia" wygląda tak:http://www.flickr.com/photos/OWNER/ID/
Gdzie za "OWNER" i "ID" wstawiamy dane z powyższej tablicy. Oprócz tego mamy dostęp bezpośrednio do grafik. Dla nas potrzebne będą miniatury:- 75x75: http://static.flickr.com/SERWER/ID_SECRET_s.jpg
- 100x75: http://static.flickr.com/SERWER/ID_SECRET_t.jpg
- 240x180: http://static.flickr.com/SERWER/ID_SECRET_m.jpg
Rozmiary mogą ulegać zmianom dla niektórych grafik.
Wyszukiwanie, linki i miniaturki
Gdy znamy postać linków oraz mamy tablicę z wynikami to trzeba to połączyć. Zmień metodę index konstruktora na:<?php
public function index()
{
$ar = Flickr::_search('kubica');
foreach($ar['img'] as $val)
{
echo '<a href="http://www.flickr.com/photos/'.$val['owner'].'/'.$val['id'].'/"><img src="http://static.flickr.com/'.$val['server'].'/'.$val['id'].'_'.$val['secret'].'_s.jpg" style="margin:5px;" border="0"></a>';
}
}
![darmowy hosting obrazków](http://images2.fotosik.pl/120/fc14dfd9fd01c179m.png)
RkBlog
Comment article