L’API di Panoramio via Php

Nei post precedenti abbiamo richiesto a flickr una serie di informazioni, attraverso le sue API (Application Programming Interface). Mi sono chiesto che differenza ci fosse tra flickr e Panoramio, per provare a immaginare l’utilità delle due piattaforme per chi volesse utilizzarne i servizi.

La prima differenza, credo rilevante, è nella popolarità. Flickr molto probabilmente è più diffuso, offre maggiori possibilità di condivisione e creazione di gruppi di utenti.

Altra differenza è di carattere quantitativo. L’account base di flickr offre la possibilità di caricare un massimo di 200 immagini, mentre Panoramio mette a disposizione dell’utente ben 2 Gb di spazio.

Altra differenza è proprio nelle API. L’api di Panoramio è estremamente semplice, ma molto limitata rispetto alle infinite possibilità di applicazione delle API di flickr.

Detto questo, ho cercato di interrogare Panoramio, seguendo le istruzioni che offre nella pagina dedicata, e di creare una galleria di immagini.

Un grosso limite, secondo me, è quello di poter inviare richieste basate su criteri esclusivamente geografici. Mi sembra di aver capito (ma non ne sono assolutamente certo), che non è possibile chiedere le foto di un certo utente, o etichettate con un certo tag. Se la mia impressione è vera, il limite è davvero notevole (almeno per il momento).

Detto questo, ecco il codice che ho usato per creare una galleria di immagini localizzate su Napoli:

<?php

$params = array(
# possibili valori: popularity, upload_date
‘order’ => ‘popularity’,
# possibili valori: public (popular photos), full (all photos)
‘set’ => ‘public’,
# intervallo numerico che individua le fotografie da prelevare
‘from’ => ‘0’,
‘to’ => ’20’,

# minimum longitude
‘minx’ => ‘14.046020’,
# minimum latitude
‘miny’ => ‘40.798217’,
# maximum longitude
‘maxx’ => ‘14.365997’,
# maximum latitude
‘maxy’ => ‘40.904171’,
# dimensioni: original, medium (default value), small,
# thumbnail (100px di larghezza), square, mini_square

‘size’ => ‘thumbnail’,
);

# questo ciclo crea un nuovo array numerico $encoded_params
$encoded_params = array();
foreach ($params as $k => $v){
$encoded_params[] = urlencode($k).’=’.urlencode($v);
}

# costruisce l’url assemblando i valori di $encoded_params
$url = “http://www.panoramio.com/map/get_panoramas.php?&#8221;.implode(‘&’, $encoded_params);

# chiama l’API e decodifica la risposta
$rsp = file_get_contents($url);

# se panoramio non risponde, manda un messaggio d’errore
if (!$rsp){
echo “errore di accesso”;

# se panoramio risponde, fa girare il codice che preleva le info delle foto
}else{

$res = json_decode($rsp);
# numero di fotografie in archivio
echo “numero di foto: ” . $res->{‘count’} . “<br /><br />”;

foreach($res->{‘photos’} as $photo){
$photo_url = $photo->photo_url;
$photo_title = $photo->photo_title;
$photo_file_url = $photo->photo_file_url;
echo ‘<a href=”‘.$photo_url.'” title=”‘.$photo_title.'”>’;
echo ‘<img src=”‘.$photo_file_url.'” title=”‘.$photo_title.'” />’;
echo ‘</a>’;
echo “\n\n”;
}

}

?>

Anche in questo caso, vale l’avvertenza dei precedenti post: non fate il copia-e-incolla, potreste avere molti errori da correggere, dato che il template di questo blog cambia automaticamente apostrofi e virgolette.

Annunci