in Digital

Runtastic: Daten exportieren

Hab ich jemals behauptet Nikeplus sei der Lauftracker der Stunde? Was interessiert mich mein Geblogge vom letzten Jahr!

Die neue Laufsaison beginnt bei mir langsam und ich bin wieder zurück bei Runtastic. Warum? Weiss auch nicht so genau. Jedenfalls ist es dort genau der gleiche Unsinn, wie bei Nikeplus: es gibt keine API und man bekommt seine Laufdaten nicht so ohne weiteres befreit.

Zum Glück hat sich aber auch hier ein netter Entwickler die Zeit genommen einen kleinen Scraper zu schreiben. Der funktioniert momentan tadellos (das kann sich natürlich jederzeit ändern, sollte Runtastic Änderungen an der Seite vornehmen). Das Exportieren funktioniert dabei nahezu identisch wie bei Nikeplus. Das hat den Vorteil, dass ich fast alles einfach hier reinkopieren kann.

  1. Voraussetzung für den Einsatz von Runtastic PHP ist ein eigener Webspace mit PHP5.2 und cURL (mit SSL) und JSON – Unterstützung.
  2. Die aktuelle Runtastic PHP-Version liegt auf Github zum Download.
  3. Die heruntergeladene Datei entzippen und „class.runtastic.php“ nun in einem neuen Ordner namens „runtastic“ ablegen.
  4. In diesem Ordner legt man mit einem Texteditor eine zweite leere Datei „index.php„.
  5. In die „index.php“ im Texteditor folgenden Code kopieren (Login und Passwort mit den eigenen Zugangsdaten ausfüllen). Da ich nur meine Läufe exportieren will, frage ich in Zeile 23 noch den Aktivitätstyp ab und filtere so z.B. Situps und Liegestütze raus:
    < ?php
    		include("class.runtastic.php");
    	
    		$runtastic = New Runtastic();
    		$runtastic->setUsername("Login");
    		$runtastic->setPassword('Passwort');
    		$runtastic->setTimeout(20);
    
    		if ($runtastic->login()) {
    			$activities = $runtastic->getActivities();
    			$i=1;
    		}
    ?>
    	
    	
    < ?php foreach ($activities as $activity): ?>
    < ?php if ($activity->type=="running"): ?>
    	
    	
    < ?php $i++; ?>
    < ?php endif; ?>
    < ?php endforeach; ?>
    
    Count ActivityID Startzeit Distanz in km
    < ?php echo $i; ?> < ?php echo $activity->id; ?> < ?php echo $activity->date->year."-".$activity->date->month."-".$activity->date->day." ".sprintf("%02s", $activity->date->hour).":".sprintf("%02s", $activity->date->minutes).":".sprintf("%02s", $activity->date->seconds); ?> < ?php echo $activity->distance/1000; ?>
  6. Jetzt lädt man den Ordner „runtastic“ per FTP auf den eigenen Webspace hoch. am besten als Unterordner von einer bestehenden Domain, so dass das ganze dann z.B. unter www.meinedomain.de/runtastic/ abrufbar ist.
  7. Ruft man die Seite auf, sollte das Ergebnis so aussehen. Das obige, kurze Skript erstellt eine rudimentäre HTML-Tabelle, in der alle meine getrackten Läufe mit Datum und Streckenlänge ausgegeben werden.
  8. Den Import der Daten in ein Google-Spreadsheet erledigt folgende Zeile, die man in die erste Zelle eines neuen Spreadsheet-Dokumentes kopiert:
  9. =ImportHtml("http://meinedomain.de/runtastic/"; "table";1)
    
  10. Die „ImportHtml„-Funktion greift sämtliche Inhalte der ersten Tabelle auf der mit der URL definierten Seite ab und importiert sie in das Spreadsheet (inkl. Spaltenüberschrift)
  11. Mit den jetzt vorliegenden Daten kann man, wie bereits im Jawbone Up – Beispiel beschrieben, mit einer Pivot-Tabelle die Daten z.B. nach Monaten auswerten und kleine Diagramme erstellen.

Die hier vorgestellte Methode ist natürlich nur die Quick&Dirty-Variante, die in zehn Minuten lauffähig ist. Mit der Runtastic PHP-Klasse bekommt man noch wesentlich mehr Daten extrahiert, wie z.B. weitere Aktivitätstypen, Angaben und Werte und mit ein bisschen zusätzlichem Aufwand könnte man die exportierten Daten auch gleich in eine Datenbank oder ein CSV-File auf dem eigenen Server schreiben, so dass man sich nicht in die zusätzliche Abhängigkeit von Google begeben muss.

Schreibe einen Kommentar

Kommentar

  1. Runtastic ist, was den Datenexport betrifft, wirklich ein bisschen „verklemmt“. Ansonsten bin ich aber absolut zufrieden. Deine Idee, das Ganze mit Google Drive zu verbinden ist echt genial. Hut ab! Freut mich, dass dir meine PHP-Klasse dabei weitergeholfen hat.

    – Timo (der „nette Entwickler“ ;))