Ancora SOA e Flickr...

  • Ancora SOA e Flickr...

    [09/06/2008]

    Giochiamo con PHP e le API di Flickr

    Le API di flickr consentono di interagire con Flickr e le foto che contiene attraverso chiamate ai suoi Web Services.
    La libreria phpFlickr fornisce una classe i cui metodi ricalcano i web services di flickr. Attraverso questa classe č possibile interagire con flickr in pochissimi step: il parsing degli XML scompare e il lungo iter di autenticazione diventa quasi indolore.

    Il mio esercizio

    Volevo una funzione che prendesse le mie 20 foto con maggior interestingness e che ne aggiornasse in automatico la data di inserimento in modo da mostrarle sempre in testa al mio album.
    L'operazione si riassume in:
    • Autenticazione
    • Estrazione del mio ID (passaggio inutile ma per esercizio l'ho lasciato)
    • Ricerca delle mie 20 foto pių interessanti
    • Aggiornamento della data di inserimento delle 20 foto, partendo dal timestamp corrente per la pių interessante e decrementanto via via un secondo per ogni foto successiva in classifica in modo da averle ordinate anche nell'album.

    Il codice č mostrato di seguito.....
    <?php
    require_once('phpFlickr-2.2.0/phpFlickr.php');

    $api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';
    $secret = 'xxxxxxxxxxxxxx';

    $f = new phpFlickr($api_key, $secret, false);

    if(empty(
    $_GET['frob'])) {
    $f->auth('write');
    } else {
    $auth_token = $f->auth_getToken($_GET['frob']);
    if (!empty (
    $f->error_code)) {
    die(
    $f->error_code." - ".$f->error_msg."\n");
    }
    echo
    "Authentication with Flickr successful.
    \n"
    ;
    }

    $me = $f->people_findByUsername('ludovico caldara');
    if (!empty (
    $f->error_code)) {
    die(
    $f->error_code." - ".$f->error_msg."\n");
    }

    $mytop_photos = $f->photos_search(array(
    "user_id" => $me['nsid'],
    "per_page" => "20",
    "sort" => "interestingness-desc",
    "extras" => "views"
    )
    );
    if (!empty (
    $f->error_code)) {
    die(
    $f->error_code." - ".$f->error_msg."\n");
    }

    $now = time();
    foreach (
    $mytop_photos['photo'] as $key => $photo) {
    $f->photos_setDates($photo['id'],$now-$key);
    if (!empty (
    $f->error_code)) {
    printf ("id: %s - "%s" - caught error %s - %s\n",
    $photo['id'], $photo['title'],$f->error_code,$f->error_msg);
    } else {
    printf ("id: %s - "%s" - modified to timestamp %d\n",
    $photo['id'], $photo['title'],time()-$key);
    }
    }
    ?>

    Happy coding!
    Categoria: PHP - Autore: ludovico - Inserisci Commento