Come molti colleghi sviluppatori si saranno accorti Google ha deciso perentoriamente e senza preavviso di eliminare le API di Google Weather dai propri servizi lasciando numerevoli siti che fanno uso di queste API senza Meteo o addirittura con errori dovuti alla mancanza di verifica della raggiungibilità dell’url (Considerato l’uptime di Google non ci si aspetta interruzioni di servizio, anche se è sempre bene considerare tutte le possibilità).

Ora c’è la corsa all’alternativa e dopo aver provato un paio di servizi ne ho trovato uno perfetto al mio scopo! Si tratta delle API di Wunderground. Registrando un account sviluppatore gratuito infatti si hanno a disposizione 500 richieste giornaliere alle API che, considerata una richiesta ogni 12 ore mettendo in cache i risultati, sono più che sufficienti.

Per chi ne faccia un uso professionale è comunque consigliabile almeno un account Drizzle che ad un prezzo sostenibile ($20 al mese) garantisce 5000 chiamate giornalierie all’API.

Di seguito uno screenshot del widget METEO che vogliamo ottenere:

Ed il codice per ottenerlo in ambiente WordPress (ricordando di sostituire il {key} con la vostra chiave sviluppatore):

<?php 
if ( false === ( $weather = get_transient( 'json_weather' ) ) ) {
    // URL delle API di wunderground forecast
    $url = 'http://api.wunderground.com/api/{key}/forecast/lang:IT/q/italy/Rimini.json';
    // Carico il file json
    if ( false != ( $forecast = @file_get_contents($url) ) ) {
        // Decodifico il Json
        $forecast = json_decode( $forecast, TRUE );
        // Limito i dati da salvare
        $weather = $forecast['forecast']['simpleforecast']['forecastday'];
        // Imposto il transient
        set_transient( 'json_weather', $weather, ( 12*60*60 ) );
    }
} 

if ( !empty( $weather ) ) {
    foreach ( $weather as $day ) {
    ?>
        <li class="single_meteo_box">
            <span class="day">
                <?= ucfirst( date_i18n( 'D', $day['date']['epoch'] ) ) ?>
            </span>
            <span class="temp"><?= $day['high']['celsius'] ?> °C</span>
            <img src="http://icons.wxug.com/i/c/i/<?= $day['icon'] ?>.gif" width="40" height="40">
        </li>
    <?php
    }
}

Vanno tenuti presenti due fattori importanti, innanzitutto che il codice descritto è valido solo per l’uso in WordPress (nel mio caso alla versione 3.4.1), se si volesse usarlo in Php puro bisognerebbe trovare un altro modo di fare la cache del risultato della chiamata alle API e secondo che le icone usate (è possibile selezionarne anche altre a questo indirizzo), al contrario di quelle di Google Weather che erano 40px*40px, sono 45px*45px per cui vanno ridimensionate dando le dimensioni manualmente al tag img.

L’esempio che riporto è piuttosto semplice, le API di Wunderlist permettono infatti di accedere ad un infinità di dati quali bollettino meteo descrittivo per giorno e sera, temperature, venti, umidità e precipitazioni. Per accedere a questi dati aggiuntivi vi consiglio di dare un’occhiata alla dettagliata documentazione in lingua inglese.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *