Moduł Flickr::Upload
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
Obsługa modułu Flickr::Upload
O czym to jest
Moduł Flickr::Upload służy do umieszczania zdjęć w serwisie flickr.com poprzez wykorzystanie API udostepnionego przez Flickr.com.
Instalacja
sudo perl -MCPAN -e 'install Flickr::Upload'
Metody
- new
Do utworzenia obiektu Flickr::Upload wykorzystujemy wartości API key oraz secret (o tym czym są i jak wygenerować te wartości przeczytasz w opisie modułu Flickr::API):
$uploadPhoto = Flickr::Upload->new({'key'=>$apiKey, 'secret'=>$secret});
- upload
Metoda służy do umieszczania zdjęcia w serwisie. Wymagane parametry to photo - ścieżka do zdjęcia, auth_token - token autoryzacyjny naszej aplikacji (więcej o tej wartości w opisie modułu Flickr::API). Dodatkowo możemy podać tagi związane ze zdjęciem (parametr tags). Istnieje również możliwości określenia kto będzie miał dostęp do zdjęcia poprzez parametry:
- is_public - czy zdjęcie będzie dostępne publicznie
- is_friend - czy zdjęcie będzie dostępne dla naszych znajomych umieszczonych w kontaktach filckr
- is_family - czy zdjęcie będzie dostępne dla członków naszej rodziny umieszczonych w kontaktach filckr
Parametr async jest odpowiedzialny za sposób przesyłania zdjęcia. Jeżeli przypiszemy mu wartość 1, wówczas zdjęcie będzie przesyłane asynchronicznie - dzięki temu nasza aplikacja może przesyłać kilka zdjęć jednocześnie nie czekając na zakończenie transferu kolejnych obrazów. Jeżeli przesyłamy plik asynchroniczne to metoda zwraca tzw. tickedid dzięki któremu możemy za pomocą funkcji check_upload sprawdzić bieżący stan transferu. W przypadku transferu synchronicznego, który się powiódł, metoda zwraca id dodanego zdjęcia. W przypadku niepowodzenia zwaracany jest odpowiedni kod błędu (opisy kodów można znaleść na http://flickr.com/services/api/upload.api.html). Przykładowe użycie metody:
my $photoid = $uploadPhoto->upload( 'photo' => '/tmp/image.jpg', 'auth_token' => $auth_token, 'tags' => 'ja perl masakra', 'is_public' => 1, 'is_friend' => 1, 'is_family' => 1 'async' => 0, );
- check_upload
Metoda sprawdza status (jednego lub więcej) plików, które przesyłamy asynchronicznie. Jako parametr przyjmuje liste tickedid zwracanych przez metodę upload. Metoda zwraca listę hashy z których każdy zawiera klucze:
- id - tickedid
- complete - status transferu (więcej na temat statusów w dokumentacji Flickr API)
- photoid - jeżeli klucz complete ma wartość completed to zwracane jest id zdjęcia
Przykładowe użycie metody:
my %status2txt = (0 => 'not complete', 1 => 'completed', 2 => 'failed'); my @rc = $uploadPhoto->check_upload( @ticketids ); for( @rc ) { print "Ticket $_->{id} has $status2txt{$_->{complete}}\n"; print "\tPhoto id is $_->{photoid}\n" if exists $_->{photoid}; }
- make_upload_request
Metoda tworzy obiekt HTTP::Request z parametrami takimi jak przy wywołaniu metody upload, w tym wypadku nie jest wymagany parametr photo. Zdjęcie można dodać używając HTTP::Message.
- upload_request
Metoda wysyła do Flickr.com dane zawarte w obiektcie HTTP::Request, który jest podawany jako parametr. Jeżeli transfer zakończy się sukcesem zwracane jest id zdjęcia lub (w przypdaku transferu asynchronicznego) tickedid, w wypadku błędu zwracana jest wartość undef.
Przykłady zastosowania
Kilka ciekawych przykładów jest dostepnych razem z kodem źródłowym modułu. Paczkę można pobrać ze strony http://www.cpan.org/authors/id/C/CP/CPB/Flickr-Upload-1.25.tar.gz.
Linki
http://www.flickr.com/services/api/ - dokumentacja Flickr API
http://search.cpan.org/~cpb/Flickr-Upload-1.25/Upload.pm - oryginalna dokumentacja modułu
Kontakt i informacje o autorze opracowania
Autor: Marcin Rutkowski
Email: m.rutkowski@xtr.net.pl