L’API di Flickr: il metodo flickr.photos.getInfo (3)

Nel post precedente abbiamo visto come costruire, con Php, l’URL della chiamata all’API di FLickr. Abbiamo, inoltre, visto come si accede ai dati dell’array di risposta con Php5.

Facciamo un passo indietro e mandiamo una richiesta a Flickr semplicemente digitando la URL nella barra degli indirizzi del browser.

Il metodo che richiamiamo è sempre flickr.photos.getInfo, mentre cambiamo, rispetto agli esempi precedenti, l’immagine richiesta:

Che l'Uomo sia lacerato dal Cielo e dalla Terra...

Ecco l’URL:

http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&photo_id=2105443990&api_key=value

Una volta inviata la richiesta dal browser, la risposta sarà questo blocco XML:

res_xml
Soffermiamoci sui singoli nodi e vediamo come accedere ai dati. Cominciamo col nodo photo:

nodo_photo
Gli attributi del nodo photo sono, dunque, questi:

  • id
  • secret
  • server
  • farm
  • dateuploaded
  • isfavorite
  • license
  • rotation
  • originalsecret
  • originalformat
  • media

Come visto nel post precedente, Flickr ci mette a disposizione i dati con un array associativo multidimensionale:

# Verifica se Flickr ha risposto correttamente
if ($rsp_obj['stat'] == 'ok'){
# Valori degli attributi del nodo photo
$photo_id = $rsp_obj['photo']['id'];
$photo_secret = $rsp_obj['photo']['secret'];
$photo_server = $rsp_obj['photo']['server'];
$photo_isfavorite = $rsp_obj['photo']['isfavorite'];
$photo_license = $rsp_obj['photo']['license'];
$photo_rotation = $rsp_obj['photo']['rotation'];
$photo_originalsecret = $rsp_obj['photo']['originalsecret'];
$photo_originalformat = $rsp_obj['photo']['originalformat'];

echo 'Valori degli attributi del nodo photo: ';
echo 'ID: ' . $photo_id . '; ';
echo 'secret: ' . $photo_secret . '; ';
...

}else{
echo "Chiamata fallita!";
}

Passiamo al nodo owner:

nodo_owner
Ed ecco come accediamo ai dati:

# Valori degli attributi del nodo owner
$owner_nsid = $rsp_obj['photo']['owner']['nsid'];
$owner_username = $rsp_obj['photo']['owner']['username'];
$owner_realname = $rsp_obj['photo']['owner']['realname'];
$owner_location = $rsp_obj['photo']['owner']['location'];

L’id del proprietario della foto è del tipo 27131929@N00, mentre lo username è quello che probabilmente vi siete dati personalizzando la URL della vostra galleria di foto.

I nodi title e description sono due nodi privi di attributi, ma con un contenuto accessibile in modo leggermente diverso:

# Contenuto dei nodi title e description
$photo_title = $rsp_obj['photo']['title']['_content'];
$photo_descr = $rsp_obj['photo']['description']['_content'];

Gli attributi del nodo visibility ci consentono di sapere se un’immagine è pubblica, oppure è riservata al gruppo di amici o familiari del proprietario:

# Valori degli attributi del nodo visibility
$ispublic = $rsp_obj['photo']['visibility']['ispublic'];
$isfriend = $rsp_obj['photo']['visibility']['isfriend'];
$isfamily = $rsp_obj['photo']['visibility']['isfamily'];

Il nodo dates fornisce, ovviamente, una serie di date:

# Valori degli attributi del nodo dates
$posted = $rsp_obj['photo']['dates']['posted'];
$taken = $rsp_obj['photo']['dates']['taken'];
$takengranularity = $rsp_obj['photo']['dates']['takengranularity'];
$lastupdate = $rsp_obj['photo']['dates']['lastupdate'];

Le date di caricamento e dell’ultimo aggiornamento ($posted e $lastupdate) sono in formato Unix timestamp, mentre la data di scatto è in formato MySql DATETIME (aaa-mm-gg hh:mm:ss).

Passiamo, ora, ai nodi notes e tags. Avendo questi un numero indeterminato di nodi figli, bisognerà accedere ai dati attraverso un ciclo for o foreach. Un listato del genere:

foreach($rsp_obj['photo']['notes']['note'] as $note){
echo 'id: '.$note['id'] . '<br />';
echo 'author: '.$note['author'] . '<br />';
echo 'authorname: '.$note['authorname'] . '<br />';
echo 'ascissa: '.$note['x'] . '<br />';
echo 'ordinata: '.$note['y'] . '<br />';
echo 'larghezza: '.$note['w'] . '<br />';
echo 'altezza: '.$note['h'] . '<br />';
echo 'testo: '.$note['_content'] . '<br />';
echo '<br />';
}

produrrà un output simile:

id: 72157603436711066
author: 82285392@N00
authorname: pinoyphotog
ascissa: 304
ordinata: 123
larghezza: 72
altezza: 45
testo: I “see” a walking squirrel

ad ogni nota aggiunta dagli utenti.

Nello stesso modo accederemo ai nodi figli del noto tags:

foreach($rsp_obj['photo']['tags']['tag'] as $tag){
echo 'id: '.$tag['id'] . '<br />';
echo 'author: '.$tag['author'] . '<br />';
echo 'raw: '.$tag['raw'] . '<br />';
echo 'machine_tag: '.$tag['machine_tag'] . '<br />';
echo 'testo: '.$tag['_content'] . '<br />';
echo '<br />';
}

Un nodo particolarmente rilevante, per le informazioni geografiche che fornisce, è il nodo location, che dispone di una serie notevole di attributi e nodi figli, ognuno con i suoi attributi.
Ovviamente, si accede ai dati sempre nello stesso modo…

Annunci