Skip to main content

API for retrieving workout data from Nike+.

Project description

NikePlus API

As a Nike+ user and software engeneer I thought it would be interesting to be able to get the raw data of my runs. This little bit of software enables you to fetch that data either in XML (as provided by Nike) or in JSON.

All you need is you UserID, which you can get by following those steps:

  1. Sign in to NikePlus.
  2. Click My Runs.
  3. Click the Share button on the top right of your runs.
  4. Click Add to a Web page.
  5. Click Grab the Code.

The Code is now copied to your clipboard. Inside that code, you can find your UserID.

How to use

The following tests are live tests with my UserID. They will ensure, that the code works against the live Nike+ API.

>>> import sw.nikeplus
>>> user_id = 279218513

Retrieving data in XML

>>> print sw.nikeplus.get_xml(user_id)
<?xml...<status>success...<run id="1889752785" workoutType="standard"><startTime>2006-10-31T16:50:07+01:00...

The response from Nike+ is cached. If, for any reason, the service is out-of-order on the next try, the old response is returned. You may force a refresh by providing the optional parameter force.

Retrieving data in JSON

>>> print sw.nikeplus.get_json(user_id)
{'status': 'success',...'startTime': '2006-10-31T16:50:07+01:00', 'duration': '1752873', 'id': '1889752785', 'workoutType': 'standard'...

The response from Nike+ is cached here, too. You can provide the optional parameter force as well, if you like to disable caching.

Helper functions

There is a helper function called xml2json. It should work with every XML, not just with the Nike+ one. It is tested inside the package, but may be used from other packages, if you need it:

>>> import sw.nikeplus.utils
>>> print sw.nikeplus.utils.xml2json(
...     """<?xml version="1.0" encoding="UTF-8"?>
...        <note id="1234">
...          <to>Tove</to>
...          <from>Jani</from>
...          <heading>Reminder</heading>
...          <body>Don't forget me this weekend!</body>
...        </note>""")
{'body': "Don't forget me this weekend!", 'to': 'Tove', 'from': 'Jani', 'heading': 'Reminder', 'id': '1234'}

CHANGELOG

0.1 (2012-04-04)

  • initial release

Project details


Release history Release notifications

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sw.nikeplus, version 0.1
Filename, size File type Python version Upload date Hashes
Filename, size sw.nikeplus-0.1.tar.gz (7.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page