Accessing Nike+ data with PHP

Nike+ is a feature for the iPod nano which allows to measure time, distance and speed of runnings with a small sensor in running shoes that sends data to a transmitter on the iPod. Those data are sent to a users Nike+ account by iTunes whenever the iPod is synchronized. On the Nike+ website there is a report of runnings, the average speed, total kilometers run etc. The users can also compete with each other in virtual competitions and define goals to run more often, faster or a longer distance. The Nike+ website displays the data graphically with Adobe Flash.

There is no official API that allows you to use the raw data. Nevertheless the data are sent to the Flash via XML so there is a chance to use them. For PHP Rasmus Lerdorf himself has implemented a class to access these data. The class allows to authenticate a user and fetch the running data of a user in a XML-Format. This class can be found under Nike+ PHP API. To use that class you just have to create an object and pass the user credentials and optional caching parameters:

include("nikePlus.php");
$mynike = new NikePlus("user@domain.de", "password");

After the instantiation the object contains a SimpleXML object with all running information of that user that can be processed by any PHP application. The variables $data, $run, $challenges and $goals hold the information of the user account, runnings, ongoing challenges with other users and the personal goals of a user.
A partial output of the $data variable is shown below and contains among other things the total statistics of a user and the last recent run. The other data are represented in a similar way.

object(SimpleXMLElement)#3 (5) {
  ["userTotals"]=>
  object(SimpleXMLElement)#7 (4) {
    ["totalDistance"]=>
    string(8) "106.5635"
    ["totalDuration"]=>
    string(8) "40500702"
    ["totalRuns"]=>
    string(2) "21"
    ["totalCalories"]=>
    string(4) "5195"
  }  
  ["mostRecentRun"]=>
  object(SimpleXMLElement)#9 (4) {
    ["@attributes"]=>
    array(1) {
      ["id"]=>
      string(10) "1155526254"
    }
    ["startTime"]=>
    string(25) "2008-04-20T10:40:54+02:00"
    ["distance"]=>
    string(6) "6.6107"
    ["duration"]=>
    string(7) "2303090"
  }
}

The Nike+ data can be used to display them on a website or to use them for mash up applications. For example there is already a word press plugin to display the data on a Blog System. Also there is another community called Runner+ which displays the data in a way similar to the Nike website.

Playing with the Xing API

Xing is Europe’s leading Business Network with more than 2 million members. Recently, Xing announced that they would come up with an API later this year to get access to the network. As far as I know, Xing was developed by ePublica using Perl and MySQL.

 

Having an API is essential in these mashup days. I was invited to the private alpha test and implemented a reference implementation of an API client via PHP5 which behaves like SOAPClient (but uses ReST as the transport mechanism) and overloads the methods that are available.

 

Here’s an example of how to call it currently (API is subject to change as it is in an alpha state):

$client = new XingClient(XING_DEVELOPERKEY, XING_OWNUSER);
// find my contacts and return some object properties
$result = $client->userContacts(array('id' => XING_OWNUSER,
'attributes' => 'display_name,company_name,current_company,business_address,photo_urls'));

Currently, for security and data privacy reasons (I have to say that Xing has always been an example of how to protect their user’s data/privacy), the API lets me only access my direct business contacts and furthermore scrambles the personal data of the contacts.

 

In the last few days I had a bit time during a cold and wrote my own mashup – marking my Xing contacts on a Google Map. Click on continue to see some screenshots and a bit of explanation …

Weiterlesen