Junecloud Delivery Status per PHP auslesen

Ich habe mich mal wieder hin gesetzt und einen sehr unsauberen, unschönen und schlecht dokumentierten Scraper in PHP geschrieben. Diesmal geht es um die Delivery Status Sendungsverfolgung von den Jungs und Mädels von Junecloud. Delivery Status Touch ist eine meiner „First-Homescreen“-Apps auf iPhone und iPad. Es gibt auch ein Dashboard-Widget für OS X (aber wer benutzt schon noch das Dashboard?).

Ich hatte jetzt das Problem, dass ich gerne alle Informationen zu Sendungsverfolgungen unterschiedlicher Versandunternehmen, die ich sowieso alle bei Delivery Status pflege, in auswertbarer Form auslesen wollte. Leider gibt es von Junecloud selbst dafür keine API, also musste ich, wie schon bei Runtastic, selbst Hand anlegen.

Das Ergebnis nennt sich „php-deliverystatus“ und steht ab sofort unter MIT Lizenz auf GitHub zum Download bereit.

Und so funktioniert es:

<?php         
include('class.deliverystatus.php');         
$ds = New Deliverystatus();         
$ds->setUsername('USERNAME');
$ds->setPassword('PASSWORD');
$ds->setTimeout(20);
 
$ds->login();
$myDeliveries = $ds->getDeliveries();
$ds->logout();
 
var_dump($myDeliveries);
?>

Als Ergebnis bekommt wird ein Array aus Objekten zurückgeliefert. Jedes Array-Element spiegelt eine gespeicherte Lieferung wieder. Alle Infos, die auf der Delivery Status Website angezeigt werden können, können anschließend auch weiterverarbeitet werden.

Hier mal ein Beispiel meiner aktuellen Delivery Status Lieferungen:

array(3) {
  [0]=>
  object(stdClass)#9 (4) {
    ["title"]=>
    string(11) "iPad Air 2 "
    ["tracking_url"]=>
    string(56) "https://tracking.hermesworld.com/?TrackID=71295223100561"
    ["tracking_number"]=>
    string(14) "71295223100561"
    ["information"]=>
    string(10) "www.hlg.de"
  }
  [1]=>
  object(stdClass)#18 (4) {
    ["title"]=>
    string(17) "Bench Jacke eBay "
    ["tracking_url"]=>
    string(83) "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?idc=966939672912&amp;zip=95028"
    ["tracking_number"]=>
    string(12) "966939672912"
    ["information"]=>
    string(18) "nolp.dhl.de, 95028"
  }
  [2]=>
  object(stdClass)#17 (4) {
    ["title"]=>
    string(15) "TNF Jacke eBay "
    ["tracking_url"]=>
    string(83) "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?idc=966939632104&amp;zip=80469"
    ["tracking_number"]=>
    string(12) "966939632104"
    ["information"]=>
    string(18) "nolp.dhl.de, 80469"
  }
}

Wie immer gilt: Viel Spaß!

Runtastic-Aktivitäten per PHP auslesen

Wenn ich mich in meinem Leben dann doch mal sportlich betätige, dokumentiere ich sämtliche Aktivitäten mit Runtastic. Runtastic ist ein ziemlich umfangreiches Portal um seine Aktivitäten und Fitness zu erfassen und eine gute Übersicht zu bekommen.

Was mich schon länger stört: Runtastic bietet keine Entwickler-API an. Ich habe bislang vergeblich versucht, irgendwie an die Daten zu kommen. Selbst ein Gold-Mitgliedschaft bringt einem hier nichts: Was auf Runtastic steht, bleibt auf Runtastic. Um dieses Problem zu umgehen habe ich spontan eine PHP-Klasse geschrieben, die sich bei Runtastic einloggt und sämtliche Aktivitäten als Objekt zurück gibt. Diese Daten kann man dann natürlich auch in Datenbanken importieren oder sich eine schnelle Excel-Export Funktion basteln.

Die Klasse steht seit heute unter dem Namen „php-runtastic“ auf GitHub zum Download bereit und steht unter MIT-Lizenz.

Hier mal ein kleines Beispiel:

<?php
	include("class.runtastic.php");
 
	$runtastic = New Runtastic();
	$runtastic->setUsername("user@example.com");
	$runtastic->setPassword("verysecurepassword");
	$runtastic->setTimeout(20);
 
	if ($runtastic->login()) {
		echo "Username: " . $runtastic->getUsername();
		echo "<br />";
		echo "UID: " . $runtastic->getUid();
		echo "<br />";
		echo "<br />";
 
		$myRuntasticActivities = $runtastic->getActivities();
		echo "My latest <b>" . $myRuntasticActivities[0]->type . "</b> activity was <b>" . $myRuntasticActivities[0]->feeling . "</b>!";
	}
 
?>

Viel Spaß!

MEGA und die 3rd-Party-Apps

Kim Dotcoms MEGA ist jetzt bereits einige Wochen verfügbar. Manch einer mag sich gewundert haben, wo denn die ganzen 3rd-Party-Apps (Sync-Clients etc.) bleiben, wie man sie von Dropbox, Box und Google Drive kennt. Ich bin selbst vor ein paar Tagen auf eine coole Idee gekommen, die ich mit MEGA als Storage-Provider umsetzen könnte. Die Entwickler-API von MEGA habe ich mir bereits am Start-Tag angesehen um mal zu schauen, was sich so machen lässt. Damals habe ich das Ganze aber nur überflogen. Heute wollte ich dann mal genauer in die Details schauen und zumindest mal ein paar Befehle in Richtung MEGA schicken.

Was mich jedoch irgendwie ziemlich stark abgeschreckt hat war folgender Abschnitt auf der Website der API:

1.1 Security considerations

The cryptographic integrity of MEGA’s user data is important to us. We can therefore not allow you to distribute or make available your client application without going through us. We will perform a code audit of your product and promote/distribute it on our site. You will also receive a share of the revenue that your application generates.

Vielleicht ist mein Englisch einfach zu schlecht, aber ich lese daraus: Bevor ich Software veröffentlichen kann, die die MEGA-API nutzt, muss ich sie an MEGA schicken, damit die die Software auf ihre Sicherheit überprüfen?

Wer wundert sich da noch, dass es bislang noch nicht allzu viele Apps gibt, die eine Anbindung an MEGA bieten?