Banka Botërore nxjerr Open API 2.0 – Si te integrosh te dhenat e saj

Motivim

Banka Botërore (që nuk është një bankë) është një institucion që merr përsipër të ndihmojë vendet në zhvillim e sipër. Për hir të këtij roli, Banka Botërore është një pasuri e plotë me informacione statistikore dhe ekonomike. Informacionet e kësaj banke mbulojnë më shumë se 200 shtete dhe Aktiviteti i saj prej më shumë se 50 vjetësh e ka lejuar atë të mbledhë informacione tepër interesante dhe të detajuara mbi ekonominë në përgjithësi.

Për të ndarë këtë sasi informacioni me website të tjera, Banka Botërore ka nxjerrë së fundmi dhe “Open API”. Open API mundëson programues të ndryshëm që të tërheqin dhe integrojnë këto të dhëna në çdo faqe interneti. (Një prezantim i API në Anglisht gjendet këtë adresë)

Statistika Ekonomike Albania.Shqiperia.com
Statistika Ekonomike Albania.Shqiperia.com

Duke parë informacionin që ky Institucion publikon dhe mbi Shqipërinë, pamë me interes integrimin e një informacioni tek versioni anglisht i Shqiperia.com, Albania.Shqiperia.com. (Ndoshta në të ardhmen mund ta integrojmë dhe në faqen shqip).

Informacioni statistikor qe terhiqet nga Banka Boterore ne kohe reale gjendet nen kete adrese: http://albania.shqiperia.com/fq/worldbank.html

Më poshtë po publikojmë një guidë të përdorimit të këtij shërbimi deri në publikimin e të dhënave që mund t’i shërbejë dhe pronarëve të tjerë të faqeve shqiptare që do donin të kishin më shumë informacion në faqet e tyre. Rrezultatet e pritshme jane si ne adresen me siper.
(WordPress ka disa probleme ne postimin e kodit te programimi dhe kodi me poshte mund te kete nevoje per disa konvertime nga kod htmlspecialchar ne plain tekst).

Rregjistrimi për një çelës për përdorimin e API

Për të përdorur shërbimin e Open Api të Bankës Botërore është e nevojshme fillimisht të rregjistrohesh për një Çelës API. Ky çelës merret duke u rregjistruar në faqen e zhvilluesve software tek http://developer.worldbank.org. Rregjistrimi është i lirë dhe pas një konfirmimi çdokush mund të përdorë platformën test.

Kërkesat (queryt) që mund të bëhen janë të formës:

http://open.worldbank.org/indicators[BSP.ADO.TFRT]?api_key=xxxx

http://open.worldbank.org/v2/countries/al/indicators?api_key=XXXX

Variabli v2 tregon që dëshirohet të përdoret versioni 2, dhe nëse nuk shënohet fare, atëherë do të përdoret versioni më i fundit.

Dokumentimi i Open API

Dokumentimi i Open API-t të Bankës Botërore është i thjeshtë dhe tepër i shkurtër (me ndonjë gabim të vogël tek tuk). Ajo që është tepër ndihmuese është një aplikim për gjenerim kërkesash (Query Generator) dhe një udhëzues (tutorial) i thjeshtë. Dokumentimi i plotë ndodhet në këtë adresë.

Ajo që është me interes për ne është forma e disa kërkesave (query) që kthejnë informacion për Shqipërinë. Përshembull:

http://open.worldbank.org/countries/al/?api_key=xxx

do të kthejë

<?xml version=”1.0″ encoding=”utf-8″ ?>
<wb:countries xmlns:wb=”http://www.worldbank.org” page=”1″ pages=”1″ per_page=”50″ total=”1″ >
<wb:country id=”ALB” >
<wb:iso2Code>AL</wb:iso2Code>
<wb:name>Albania</wb:name>
<wb:region id=”ECA” >Europe &amp; Central Asia</wb:region>
<wb:incomeLevel id=”LMC” >Lower middle income</wb:incomeLevel>

<wb:lendingType id=”IDB” >IDA blend</wb:lendingType>
<wb:capitalCity>tirane</wb:capitalCity>
<wb:longitude>19.8172226</wb:longitude>
<wb:latitude>41.3316574</wb:latitude>
</wb:country>
</wb:countries>

Në projektin tonë ne kemi përdorur 2 tip URLsh për thirrjet e statistikave që kemi publikuar.

http://open.worldbank.org/indicators?api_key=xxx

na jep një informacion për të gjithë indikatorët statistikorë që ka Banka Botërore

http://open.worldbank.org/countries/ALB/indicators/$INDIKATORID?per_page=10&api_key=$apiKey&date=1990:2008

Bazuar mbi këto dy url – kërkesash mund të merren disa informacione statistikore për vendind tonë. Përgjigja si mësipër është një skedar xml sërish. Ky skedar, duke e lexuar me një script PHP mund të filtrojë të gjitha fushat e nevojshme një nga një dhe më pas të integrohet në çdo faqe.

Botimi i të dhënave

Botimi i të dhënave në faqen tuaj kalon në 3 hapa:

  1. Tërheqja edhe leximi i skedarit XML në scriptin PHP
  2. Ndryshimi i formës së informacionit nga XML në një format më të përshtatshëm për publikim
  3. Botimi i tij në faqe

Bazuar mbi këto 3 pika, ndërtohet dhe puna për programimin e kodit në PHP. Fillimisht krijojmë një skedar me emër func_api.php i cili mban funksionet kryesore të lidhjes dhe leximit të skedarit XML.

<?php
/**
* This function is used in collaboration with worldbank.php and worldbankstatistics.php
* The function will call an URL and return the simleXml object out of it
*
*/
function callApi($url){
        $c = curl_init($url);
                curl_setopt($c, CURLOPT_MUTE, 1);
                curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
                $rawXML = curl_exec($c);
                curl_close($c);

                $fixedupXML = htmlspecialchars($rawXML);
                $workableXML = htmlspecialchars_decode($fixedupXML);
                $xml = simplexml_load_string($workableXML);
      // Retrieve HTTP status code
      list($version,$status_code,$msg) = explode(' ',$http_response_header[0], 3);
      // Check if the API call failed
      if(api_call_returned_error($status_code)) {
         echo "Could not fetch country list. Error #" . $status_code . " - " . $msg;
         exit;
      }
        return $xml->children("http://www.worldbank.org");
}
 /**
     * Checks whether the call to the API returned an error
     *
     * @param SimpleXMLElement $xml
     */
    function api_call_returned_error($status_code) {
      if($status_code > 200) {
        return true;
      }
      return false;
    }
   /**
    * Return current API URL
    */
    function api_get_url() {
        return "http://api.wbext.com/v2";
    }
?>

Ndryshe nga versioni origjinal i cili bënte leximin automatikisht të xml-së duke përdorur simplexml_load_file në versionin tonë leximin e skedarit e bëjmë duke përdorur curl. (Arsyeja pse ne përdorim curl mbi php open wrappers është për një temë tjetër).

Krijimi i këtij skedari me funksione na thjeshton skedarët ku do bëjmë ndryshimin e informacionit nga XML në një format tjetër.

<?php

require_once($_SERVER["DOCUMENT_ROOT"]."/funcdir/func_api.php");

$apiKey = "XXX";

$url = api_get_url()."/indicators?api_key=".$apiKey;

$identifiers = callApi($url);

echo ‘<table width=”100%” id=”worldbank”>
<thead>
<tr bgcolor=”#efefef”>
<td width=”170px”>Name of the Indicator / Topics</td>
<td>Source Note</td>
</tr>
</thead>
<tbody>’;
$i=0;
foreach($identifiers as $identifier) {
$i++;
echo ‘<tr>
<td><strong><a href=”/worldbankstatistics/faqe2/’.$identifier->attributes().'” class=”clickme” id=”‘.$identifier->attributes().'”>’.$identifier->name.'</a></strong><br /><span style=”font-size:90%”>
‘;foreach ($identifier->topics->topic as $topic)
{
echo “- “.$topic.”<br />”;
}
echo ‘</span>
</td>
<td><div id=”res’.$identifier->attributes().'”></div><span style=”font-size:80%”>’.$identifier->sourceNote.’ <em>Source: </em><strong>’.$identifier->source.'</strong></span></td>
<!–<td></td>–>
</tr>’;
}
echo ‘</tbody></table>’;

Në kodin më sipër rrjeshti: $identifiers = callApi($url); bën thirrjen e funksionit i cili tërheq skedarin XML dhe e kthen në një objekt simpleXML. Më tej me skedarin më sipër bëjmë një lexim të gjithë elementëve në objektin simpleXML dhe i nxjerrim në një Tabele HTML-je. Rrezultati është i njëjtë me: http://albania.shqiperia.com/fq/worldbank.html.

Nëse do e vini re skedarin, në kolonën e djathtë kemi krijuar disa linke që na dërgojnë në një faqe tjetër. Deri tani nuk kemi bërë gjë tjetër veçse kemi nxjerrë një faqe me disa statistika kyçe të Bankës Botërore. Vizitorët do kenë mundësi të shikojnë statistika specifike për Shqipërinë duke klikuar mbi lidhjet në kolonën e majtë.

Përmbajtja e faqe2.php është pak a shumë e njëjtë me atë sa më sipër. Edhe këtu kemi një thirrje të funksionit callApi($url); dhe më tej një iteracion në rekordet e objektit simple XML.

<?php
$apiKey = "xxx";
// Set url to make country query into the API
$url = api_get_url()."/countries/ALB/indicators/$rid?per_page=50&api_key=$apiKey&date=1990:2008";
$data =callApi($url);

echo ‘<table width=”100%” id=”worldbank”>
<thead>
<tr bgcolor=”#efefef”>
<td width=”170px”>Date</td>
<td>Value</td>
</tr>
</thead>
<tbody>’;
$i=0;
foreach($data as $datum) {
$i++;
echo ‘<tr>
<td><strong>’.$datum->date.'</a></strong>
</td>
<td>’;
if (!empty($datum->val))
echo $datum->val;
else
echo ‘No data available’;
echo ‘</td>
</tr>’;
}
echo ‘</tbody></table>’;
//Another Call to retrieve some data about a specific Indicator

$url = api_get_url().”/indicators[$rid]?api_key=$apiKey”;
$metaIndicator = callApi($url);
echo ‘<p>’;
foreach ($metaIndicator as $metaIndic) {
if (!empty($metaIndic->sourceNote))
echo ‘ <em>Note:</em> ‘ . $metaIndic->sourceNote.'<br />’;
echo ‘<hr /><em>Source:</em> ‘ . $metaIndic->source.'<br /><hr />’;
foreach ($metaIndic->topics->topic as $topic)
{
echo “Topic:  “.$topic.”<br />”;
}
}
echo ‘</p>’;
?>

Skedari do të shfaqë diçka si: http://albania.shqiperia.com/worldbankstatistics/rid/SP.ADO.TFRT/Adolescent+fertility+rate+(births+per+1000+women+ages+15-19).html

This site uses Thumbshots previews

Leave a Reply