From: Petter Reinholdtsen Date: Mon, 28 May 2012 21:58:26 +0000 (+0000) Subject: Ny post. X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/commitdiff_plain/e6544e4c7228ba38913cb79443c20b068370ca28?hp=3547f13c4d4c4ad6b37b61a8b3e3cee479095314 Ny post. --- diff --git a/blog/draft/2011-12-bensinpris.txt b/blog/data/2012-05-28-bensinpris.txt similarity index 69% rename from blog/draft/2011-12-bensinpris.txt rename to blog/data/2012-05-28-bensinpris.txt index b00ad3880b..63a8669480 100644 --- a/blog/draft/2011-12-bensinpris.txt +++ b/blog/data/2012-05-28-bensinpris.txt @@ -1,56 +1,65 @@ Title: Litt informasjon om Bitfactors Bensinpris-API Tags: norsk -Date: 2011-12-09 12:00 +Date: 2012-05-28 23:55 -

For noen måneder siden lanserte Bitfactory en +

I fjor siden lanserte Bitfactory en mobilapp for å få -tilgang til bensinpriser på landets bensinstasjoner. -Informasjonen appens brukere har samlet inn har så langt kun vært +tilgang til bensinpriser på landets bensinstasjoner ved å samle +inn prisene på dugnad ved hjelp av mobilapp-ens brukere. +Informasjonen app-ens brukere har samlet inn har så langt kun vært tilgjengelig for brukerne av app-ene, og API for å hente ut informasjonen fra andre plattformer har ikke vært publisert. Da løsningen kom spurte jeg utviklerne om de kunne publisere API-dokumentasjon og de skulle se på saken, men det har ikke skjedd så -langt.

+langt. Jeg antar de har vært for travelt opptatt til å publisere +API-dokumentasjon.

Utrolig nok er det i følge -Dagens +Dagens Næringsliv og -Finnmark +Finnmark Dagbladet bensinstasjoner som nekter å oppgi prisene sine på telefon, slik at det ikke finnes en fornuftig måte å få tak i prisene på uten å samle dem inn på stedet. Flere har dugnader på gang for å samle inn prisinformasjon om bensin, men så vidt jeg kan se er det kun -dinside.no +dinside.no og Bitfactorys App som får regelmessige oppdateringer. Dinsides oversikt er tilgjengelig på web for de som vil følge med, mens -bitfactorys informasjon er ikke enkelt tilgjengelig.

+bitfactorys informasjon ikke er like enkelt tilgjengelig.

Jeg tok meg derfor litt tid for å revers-utvikle protokollen for -Bitfactorys mobilapp for å gjøre den innsamlede informasjonen +Bitfactorys mobilapp for å gjøre den innsamlede informasjonen mer tilgjengelig for flere. Protokollen bruker HTTP og normal -forms-notasjon for POST. Her er API-kallene jeg har identifisert så -langt.

+forms-notasjon for POST. Jeg lot en telefon koble seg til mitt +trådløsnett, og satte opp tcpdump til å samle all trafikken mot +www.bitfactory.no, og deretter tittet på alle HTTP-kallene ved hjelp +av wireshark. Her er API-kallene jeg har identifisert så langt.

-stasjonsDatabaseUpdateStamp +

stasjonsDatabaseUpdateStamp

GET http://www.bitfactory.no/Bensin/ver1.1.stasjonsDatabaseUpdateStamp

Vet ikke helt hva dette API-kallet gjør, men navnet gjør at jeg tror den rapporterer når listen over stasjoner sist ble endret. -Returverdien er et tall som pr. nå er 1319145491. Mitt gjett er at -dette er sekunder siden 1. januar 1970 som kan konverteres til en -leselig dato med perl -e 'print scalar(localtime(1319145491)), -"\n"'. Dagens verdi konverterer da til "Thu Oct 20 23:18:11 -2011".

+Returverdien er et tall som pr. 2011-12-09 er 1319145491 og +pr. 2012-05-28 er 1336420693. Mitt gjett er at dette er sekunder +siden 1. januar 1970 ala det en finner på Linux, som kan konverteres +til en leselig dato med perl -e 'print +scalar(localtime(1319145491)), "\n"'. Den første verdien +konverterer da til "Thu Oct 20 23:18:11 2011", mens den andre +konverteres til "Mon May 7 21:58:13 2012".

-GetXMLDatabase +

GetXMLDatabase

echo password=X43uP9KS_3ZqR | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php +

echo password=XYZXYZXYZXYZX | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php

Henter ned listen med stasjoner på XML-format. Argumentet er password som muligens følger med i programpakken og eventuelt genereres av app-en. Nedlasting med samme passord flere ganger ser -ikke ut til å fungere. Selve listen ser slik ut (klippet):

+ikke ut til å fungere. Innholdet er ca. 1600 stasjoner, men manglet +bensinstasjonen i min hjemkommune Ballangen da jeg sjekket, så den er +ikke komplett. Formatet på selve listen ser slik ut (klippet):

 <?xml version="1.0" encoding="UTF-8"?>
@@ -83,7 +92,7 @@ ikke ut til å fungere.  Selve listen ser slik ut (klippet):

</STASJONSDATABASE>
-GetBanStatus +

GetBanStatus

echo UDID=Android-123456789012345 | POST http://www.bitfactory.no/Bensin/ver1.1.GetBanStatus.php

@@ -96,7 +105,7 @@ ut til å være den unike ID-en til en mobil-enhet. Returnverdi er 'NO' for alle UDID-verdier jeg har testet. Gjetter på at alternativ returverdi er 'YES', men har ikke sett en slik verdi så langt.

-PriserVedStasjoner +

PriserVedStasjoner

echo 'stasjoner=810,364&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjoner.php

@@ -104,8 +113,8 @@ returverdi er 'YES', men har ikke sett en slik verdi så langt.

bensinstasjoner. Den tar to POST-argumenter, "stasjoner" som er kommaseparert liste over stasjons-IDer (numeriske), og "day" som bør settes til "0" for å få ut informasjon om priser. Usikker på hva -tallet betyr, men mistenker det har med hvor langt tilbake i tid det -skal hentes ut informasjon.

+day-tallet betyr, men mistenker det har med hvor langt tilbake i tid +det skal hentes ut informasjon.

Resultatet som kommer tilbake er en kommaseparert liste for hver enkelt stasjon, med <br> som skillemarkør mellom hver stasjon. @@ -132,7 +141,7 @@ Ikke helt sikker på hva alle feltene er. Her er mine gjett:

deretter tre blokker for 95-oktan bensin, 98-oktan bensin og disel.

-PriserVedStasjon +

PriserVedStasjon

echo 'id=736&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjon.php

@@ -141,12 +150,12 @@ Formatet er dato på formen "08_12_2011" for 2011-12-08, og noe som ser ut som samme format som fra PriserVedStasjoner. For stasjoner der intet er registrert returnerer den "NO RESULTS".

-AllePriser +

AllePriser

echo day=0 | POST http://www.bitfactory.no/Bensin/ver1.1.AllePriser.php

Returnere liste med av alle stasjoner det er registrert oppdaterte -priser på siste 24 timer. Returnerer "NO RESULTS" når listen er tom. -Ellers returnerer den en dato på formen "Thursday_08_12_2011" skilt -med <br> og deretter en liste med stasjoner på samme format som -PriserVedStasjoner.

+priser på siste 24 timer (eller er det fra ca. midnatt dagen før?). +Returnerer "NO RESULTS" når listen er tom. Ellers returnerer den en +dato på formen "Thursday_09_12_2011" fulgt av <br> og deretter +en liste med stasjoner på samme format som PriserVedStasjoner.