]> pere.pagekite.me Git - homepage.git/blobdiff - blog/archive/2012/05/05.rss
Generated.
[homepage.git] / blog / archive / 2012 / 05 / 05.rss
index 29c74576c692b66dd18bbf18172ffd5e326228f9..b125e4ed3fe078b637a5fcdcaafec14303cd5def 100644 (file)
@@ -613,5 +613,170 @@ keep sending documents in ODF formats.</li>
 </description>
        </item>
        
+       <item>
+               <title>Litt informasjon om Bitfactors Bensinpris-API</title>
+               <link>http://people.skolelinux.org/pere/blog/Litt_informasjon_om_Bitfactors_Bensinpris_API.html</link>        
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Litt_informasjon_om_Bitfactors_Bensinpris_API.html</guid>
+                <pubDate>Mon, 28 May 2012 23:55:00 +0200</pubDate>
+               <description>&lt;p&gt;I fjor siden lanserte Bitfactory en
+&lt;a href=&quot;http://www.bitfactory.no/bensinpris.html&quot;&gt;mobilapp for å få
+tilgang til bensinpriser&lt;/a&gt; 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.  Jeg antar de har vært for travelt opptatt til å publisere
+API-dokumentasjon.&lt;/p&gt;
+
+&lt;p&gt;Utrolig nok er det i følge
+&lt;a href=&quot;http://www.dn.no/energi/article2194526.ece&quot;&gt;Dagens
+Næringsliv&lt;/a&gt; og
+&lt;a href=&quot;http://www.finnmarkdagblad.no/nyheter/article5323140.ece&quot;&gt;Finnmark
+Dagbladet&lt;/a&gt; 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
+&lt;a href=&quot;http://www.dinside.no/php/oko/bensin/vis_prisliste.php&quot;&gt;dinside.no&lt;/a&gt;
+og Bitfactorys App som får regelmessige oppdateringer.  Dinsides
+oversikt er tilgjengelig på web for de som vil følge med, mens
+bitfactorys informasjon ikke er like enkelt tilgjengelig.&lt;p&gt;
+
+&lt;p&gt;Jeg tok meg derfor litt tid for å revers-utvikle protokollen for
+Bitfactorys mobilapp for å gjøre den innsamlede informasjonen mer
+tilgjengelig for flere.  Protokollen bruker HTTP og normal
+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.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;stasjonsDatabaseUpdateStamp&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;GET http://www.bitfactory.no/Bensin/ver1.1.stasjonsDatabaseUpdateStamp&lt;/tt&gt;&lt;/p&gt;
+
+&lt;p&gt;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. 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 &lt;tt&gt;perl -e &#39;print
+scalar(localtime(1319145491)), &quot;\n&quot;&#39;&lt;/tt&gt;.  Den første verdien
+konverterer da til &quot;Thu Oct 20 23:18:11 2011&quot;, mens den andre
+konverteres til &quot;Mon May 7 21:58:13 2012&quot;.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;GetXMLDatabase&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;echo password=X43uP9KS_3ZqR | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php
+&lt;p&gt;&lt;tt&gt;echo password=XYZXYZXYZXYZX | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php
+
+&lt;p&gt;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.  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):&lt;/p&gt;
+
+&lt;pre&gt;
+&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
+&amp;lt;STASJONSDATABASE&amp;gt;
+&amp;lt;STASJON&amp;gt;
+&amp;lt;NAME&amp;gt;&amp;lt;/NAME&amp;gt;
+&amp;lt;ADDRESS&amp;gt;&amp;lt;/ADDRESS&amp;gt;
+&amp;lt;ID&amp;gt;0&amp;lt;/ID&amp;gt;
+&amp;lt;LATITUDE&amp;gt;0.000000&amp;lt;/LATITUDE&amp;gt;
+&amp;lt;LONGITUDE&amp;gt;0.000000&amp;lt;/LONGITUDE&amp;gt;
+&amp;lt;COMPANY&amp;gt;&amp;lt;/COMPANY&amp;gt;
+&amp;lt;/STASJON&amp;gt;
+&amp;lt;STASJON&amp;gt;
+&amp;lt;NAME&amp;gt;Statoil Best Eidsvoll Verk&amp;lt;/NAME&amp;gt;
+&amp;lt;ADDRESS&amp;gt;Gamle Trondheimsvei 339 2074 Eidsvoll Verk&amp;lt;/ADDRESS&amp;gt;
+&amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;
+&amp;lt;LATITUDE&amp;gt;60.303902&amp;lt;/LATITUDE&amp;gt;
+&amp;lt;LONGITUDE&amp;gt;11.168100&amp;lt;/LONGITUDE&amp;gt;
+&amp;lt;COMPANY&amp;gt;Best&amp;lt;/COMPANY&amp;gt;
+&amp;lt;/STASJON&amp;gt;
+[...]
+&amp;lt;STASJON&amp;gt;
+&amp;lt;NAME&amp;gt;Esso Andenes&amp;lt;/NAME&amp;gt;
+&amp;lt;ADDRESS&amp;gt;Falcksgate 9, 8480 Andenes&amp;lt;/ADDRESS&amp;gt;
+&amp;lt;ID&amp;gt;1822&amp;lt;/ID&amp;gt;
+&amp;lt;LATITUDE&amp;gt;69.320999&amp;lt;/LATITUDE&amp;gt;
+&amp;lt;LONGITUDE&amp;gt;16.118700&amp;lt;/LONGITUDE&amp;gt;
+&amp;lt;COMPANY&amp;gt;Esso&amp;lt;/COMPANY&amp;gt;
+&amp;lt;/STASJON&amp;gt;
+&amp;lt;/STASJONSDATABASE&amp;gt;
+&lt;/pre&gt;
+
+&lt;p&gt;&lt;b&gt;GetBanStatus&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;echo UDID=Android-123456789012345 | POST http://www.bitfactory.no/Bensin/ver1.1.GetBanStatus.php&lt;/tt&gt;&lt;/p&gt;
+
+&lt;p&gt;Vet heller ikke helt hva dette API-kallet gjør.  Navnet gjør at jeg
+tror den rapporterer om telefonen med UDID oppgitt som argument er
+bannlyst fra tjenesten.  Bannlysning gjør antagelig at telefonen ikke
+kan brukes til å registrere bensinpriser, men det er også mulig det
+blokkerer for å se på priser.  Eneste POST-argument er UDID, som ser
+ut til å være den unike ID-en til en mobil-enhet.  Returnverdi er &#39;NO&#39;
+for alle UDID-verdier jeg har testet.  Gjetter på at alternativ
+returverdi er &#39;YES&#39;, men har ikke sett en slik verdi så langt.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;PriserVedStasjoner&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;echo &#39;stasjoner=810,364&amp;day=0&#39; | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjoner.php&lt;/tt&gt;&lt;/p&gt;
+
+&lt;p&gt;Dette kallet henter ut priser registrert på en eller flere
+bensinstasjoner.  Den tar to POST-argumenter, &quot;stasjoner&quot; som er
+kommaseparert liste over stasjons-IDer (numeriske), og &quot;day&quot; som bør
+settes til &quot;0&quot; for å få ut informasjon om priser.  Usikker på hva
+day-tallet betyr, men mistenker det har med hvor langt tilbake i tid
+det skal hentes ut informasjon.&lt;/p&gt;
+
+&lt;p&gt;Resultatet som kommer tilbake er en kommaseparert liste for hver
+enkelt stasjon, med &amp;lt;br&amp;gt; som skillemarkør mellom hver stasjon.
+Ikke helt sikker på hva alle feltene er.  Her er mine gjett:&lt;/p&gt;
+
+&lt;table&gt;
+&lt;tr&gt;&lt;ht&gt;Felt&lt;/ht&gt;&lt;ht&gt;Beskrivelse&lt;/ht&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Bensinstasjons-ID&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Pris for blyfri 95 oktan, flyttall med punktum som desimalskille.&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Klokkeslett da prisen ble oppdatert, format HH:MM.  &lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Telefon-ID på formen Android-123456789012345 eller hex-kodet streng/MD5-sum&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;tall, uviss betydning.  muligens relatert til day-verdien.&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Pris for blyfri 98-oktan?&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;samme som felt 3&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;samme som felt 4&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;samme som felt 5&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;Pris for disel&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;Samme som felt 3&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;Samme som felt 4&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;Samme som felt 5&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+
+&lt;p&gt;En stasjonsoppføring består dermed av av bensinstasjons-ID og
+deretter tre blokker for 95-oktan bensin, 98-oktan bensin og
+disel.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;PriserVedStasjon&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;echo &#39;id=736&amp;day=0&#39; | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjon.php&lt;/tt&gt;&lt;/p&gt;
+
+&lt;p&gt;Ser ut til å returnere informasjon for en enkelt bensinstasjon.
+Formatet er dato på formen &quot;08_12_2011&quot; for 2011-12-08, og noe som ser
+ut som samme format som fra PriserVedStasjoner.  For stasjoner der
+intet er registrert returnerer den &quot;NO RESULTS&quot;.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;AllePriser&lt;/b&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;tt&gt;echo day=0 | POST http://www.bitfactory.no/Bensin/ver1.1.AllePriser.php&lt;/tt&gt;&lt;/p&gt;
+
+&lt;p&gt;Returnere liste med av alle stasjoner det er registrert oppdaterte
+priser på siste 24 timer (eller er det fra ca. midnatt dagen før?).
+Returnerer &quot;NO RESULTS&quot; når listen er tom.  Ellers returnerer den en
+dato på formen &quot;Thursday_09_12_2011&quot; fulgt av &amp;lt;br&amp;gt; og deretter
+en liste med stasjoner på samme format som PriserVedStasjoner.&lt;/p&gt;
+</description>
+       </item>
+       
         </channel>
 </rss>