View previous topic :: View next topic |
Author |
Message |
vemundo Veteran
Joined: 31 Jan 2006 Posts: 1381
|
Posted: 03.05.2015 10:09 Post subject: |
|
|
OrionPax wrote: | Vemundo, hvis du kan PMe meg en mailadresse, så kan jeg sende deg en kopi av rådataene. Havner på rundt 1MB med XML. Stygt å lese, egner seg ikke for forumposting (fordi det er så stort), men tipper vi lett finner svarene våre nå. |
Ah, nå får du 10 på børsen min! PM sendt.
Ser fra utdraget at totalt antall plasser var 21645 her også, så det stemmer med den andre fila.
Et tips, den andre fila var skrevet med ISO-8859-1 character encoding, men uten å spesifisere det øverst i fila. Alt som leser xml vil anta utf8 om du ikke ber om annet, så da bli æøå osv. garbled. Kan støte på det samme med denne fila også, det sto ingenting om character encoding øverst. |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 10:13 Post subject: |
|
|
Skal sjekke om det utgjør noen forskjell, kjørte bare Default-dekoding her (som fort kan vært UTF8 ja), og har ikke støtt på noen åpenbare feil enda, men fila var litt for lang til å lese igjennom når jeg var trøtt som en dupp. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
v_olden Veteran
Joined: 10 Jul 2007 Posts: 2910
|
Posted: 03.05.2015 10:24 Post subject: |
|
|
Hvis ikke dette sørger for walkover når årets forumdebattant skal kåres så vet ikke jeg. _________________ Medlem nr. 2201
Vinner av preseasonresultattipsekonkurransen 2014 |
|
Back to top |
|
|
vemundo Veteran
Joined: 31 Jan 2006 Posts: 1381
|
Posted: 03.05.2015 10:31 Post subject: |
|
|
OrionPax wrote: |
Kona sto opp når de våknet. Hun liker å gjøre det for å ha det moralske overtaket på meg.
|
Har vært oppe alene med lille turbo siden 06:55 men noe moralsk overtak kan jeg se langt etter.
OrionPax wrote: |
Sender XML til Vemundo nå, så ser vi om vi klarer å lage en enkel telling i løpet av dagen. Tenker litt på en Windows-app som henter ned hvert minutt og lager graf over utviklingen, får se hvor lenge motivasjonen varer nå som koden er knekt. |
Kanskje bare lage en liten kommandolinje sak i C# først som tar inn en nedlastet og komprimert .xml og spytter ut en ferdig utpakket og korrekt formatert .xml? Så kan vi kalle det C# programmet fra hva det skulle være, PHP, javascript, whatnot?
I første omgang er det vel greit å bare kunne produsere tall for neste kamp kjapt, men etterhvert hadde det jo vært litt artig å dumpet tallene i en database hvert 5. minutt eller noe sånt. Da samler vi også en historie fra kampene og kan automatisk generere prognoser basert på tidligere salg. Websidene til RBK/billettservice viser jo også kampstart for kampen, så hver gang vi henter tilgjengelighetsdata vet vi hvor mange minutter det er til kampstart og kan sammenligne med tilsvarende fra andre kamper vi har monitorert. |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 10:41 Post subject: |
|
|
Yes, kommandolinje-saken er i praksis ferdig som det er. Dvs. sånn den er akkurat nå tar den xml-fila full av gerp og lagrer en vakker en. Av brukervennlighetshensyn kunne jeg tenke meg at den kunne ta en URL som input, parse html'en etter datafila, laste den ned, og spytte ut xml som alle kan bruke som du sier. Windows app'en er mest som et proof of concept.
Det aller mest elegante hadde vel vært en webapp som alle kunne bruke - så slipper man å være så platformavhengig som man blir med det jeg lager (.Net kommer jo for fullt på Linux og Mac nå, men ikke tidsnok til at vi kan lage fullgode UIer for alle).
Jeg har lekt litt med ember.js tidligere, og ved å dytte dataene inn i f.eks. en SQL-server-database og eksponere det med et JSON REST-interface kan vi få til litt av hvert.
Så dukker selvfølgelig spørsmålet opp om BillettService o.l. blir grinete på det vi driver med. Sånn jeg ser det bruker vi bare data som de uansett laster ned til våre datamaskiner når vi bruker deres tjeneste, men kan hende de ser det annerledes. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
larsarus Legende
Joined: 12 Oct 2010 Posts: 10752 Location: Trolla
|
Posted: 03.05.2015 10:57 Post subject: |
|
|
Er vel lite sannsynlig at de eventuelt fortsatt aktive utviklerene hos TicketMaster hiver seg rundt og skriver om setekart-koden på grunn av dette her, men de som drifter webserveren kan jo fort begynne å blocke på at man må ha gyldige Referer-headere (ikke vanskelig å omgå) og kanskje svarteliste IP-nummer o.l. Min erfaring (drev med noe AIS-scraping) tilsier at det ikke lønner seg å polle for ofte og fra for mange steder om man skal fly under radaren over lang tid... |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 11:04 Post subject: |
|
|
Viktige poenger det, larsarus. Jeg tenkte å ta en runde med Fiddler2 og se hvor bra jeg klarer å se ut som billettservice sin egen app, både når det gjelder frekvens og request-utseende. Dessuten kan jo en sånn tjeneste være bittelitt smart - hvis noen leser logger vil den sikkert skille seg greit ut om den poller 24/7. Ikke noe poeng i å hente data midt på natta med mindre vi vil se hvor mye som skjer i fylla f.eks. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
haavarl Forumsjef
Joined: 10 Sep 2002 Posts: 15253 Location: Askim
|
Posted: 03.05.2015 11:35 Post subject: |
|
|
De siste dagene:
_________________ Embrace science - resist ignorance |
|
Back to top |
|
|
Hedning Legende
Joined: 30 Apr 2006 Posts: 10937
|
Posted: 03.05.2015 11:45 Post subject: |
|
|
Haha |
|
Back to top |
|
|
gisp! Legende
Joined: 04 Sep 2008 Posts: 10637
|
Posted: 03.05.2015 11:47 Post subject: |
|
|
Vemundo wrote: |
OrionPax wrote: |
Sender XML til Vemundo nå, så ser vi om vi klarer å lage en enkel telling i løpet av dagen. Tenker litt på en Windows-app som henter ned hvert minutt og lager graf over utviklingen [ ... ] |
[ ... ] men etterhvert hadde det jo vært litt artig å dumpet tallene i en database hvert 5. minutt eller noe sånt. Da samler vi også en historie fra kampene og kan automatisk generere prognoser basert på tidligere salg. Websidene til RBK/billettservice viser jo også kampstart for kampen, så hver gang vi henter tilgjengelighetsdata vet vi hvor mange minutter det er til kampstart og kan sammenligne med tilsvarende fra andre kamper vi har monitorert. |
Men hvorfor hente ned og lage graf over utviklingen på så mikroskopisk som minuttnivå, eller samle data hvert femte minutt?
Hadde det ikke holdt lenge med å hente ned for eksempel fire ganger pr dag (f.eks kl 10, 14, 18, 22)?
Og mens dere styrer med vår månelanding, har jeg laget en tortano som står til heving. Ny hobby vettu
Edit: Skrivefeil. _________________ "Det er viktig å gå på banen for å være best mulig sjøl. Men det er langt viktigere å gå på banen for å gjøre medspillerne gode."
Last edited by gisp! on 03.05.2015 11:55; edited 2 times in total |
|
Back to top |
|
|
xMegafonmannen Veteran
Joined: 20 Jul 2007 Posts: 2851
|
|
Back to top |
|
|
Diabolic Rutinert
Joined: 31 Jul 2007 Posts: 738
|
Posted: 03.05.2015 11:51 Post subject: |
|
|
Kan jo differensiere intervallene også. Hver fjerde time til vanlig, men noe oftere fra to dager inn mot kamp og enda litt oftere på kampdag. F.eks. |
|
Back to top |
|
|
gisp! Legende
Joined: 04 Sep 2008 Posts: 10637
|
Posted: 03.05.2015 12:09 Post subject: |
|
|
Enig med de to siste. Deigen ble for øvrig litt klissete, men ting læres vel etterhvert. _________________ "Det er viktig å gå på banen for å være best mulig sjøl. Men det er langt viktigere å gå på banen for å gjøre medspillerne gode." |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 13:19 Post subject: |
|
|
Ny tråd: Deigautomat!
Jeg kjører en teori-test her straks, for å se om noen av mine antagelser i forhold til xml-dataene kan være riktige. Ser det bra ut begynner jeg på det som henter ut "live" data fra webserveren.
Det er et stykke herfra til fungerende webapp med highcharts og full pupp, men frem mot lsk skal vi ihvertfall klare å skaffe dataene ser det ut til.
Note to self: Husk å levere unge i bursdagsselskap. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
2mas Sjef
Joined: 06 Sep 2002 Posts: 59330 Location: Trondhjem
|
Posted: 03.05.2015 13:25 Post subject: |
|
|
|
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 13:36 Post subject: |
|
|
Ok, teorien holder forsåvidt litt vann (..!) inntil videre.
Har denne XML-strukturen:
Event_details -> E -> Section_id_list -> masse "E"-objekter.
Disse E-objektene ser ut til å være "maten" vi skal ha tak i. Et eksempel på et E-objekt som dere kan glede dere over:
Code: |
<E>
<Section_id>36545050</Section_id>
<Section_name>BYG-FA</Section_name>
<Section_tag>15549</Section_tag>
<Seat_summary>
<Tatt>31</Tatt>
<TL>
<E>
<Ett>000000000000</Ett>
<C>15</C>
<Dc>O</Dc>
</E>
<E>
<Ett>000004C80001</Ett>
<C>3</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000004CB0001</Ett>
<C>3</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000005900001</Ett>
<C>2</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000005C30001</Ett>
<C>8</C>
<Dc>A</Dc>
</E>
</TL>
</Seat_summary>
<Price_level>4</Price_level>
<Sub_price_level>0</Sub_price_level>
<Quality>0</Quality>
<Is_ga>false</Is_ga>
<Uses_extexp>false</Uses_extexp>
<Seating_type>0</Seating_type>
<Sell_class>00</Sell_class>
<Left_exit></Left_exit>
<Right_exit></Right_exit>
<Row_count>1</Row_count>
<Seat_count>31</Seat_count>
<Row_names>
<E>31</E>
</Row_names>
<Seat_names>
<E>31</E>
<E>30</E>
<E>29</E>
<E>28</E>
<E>27</E>
<E>26</E>
<E>25</E>
<E>24</E>
<E>23</E>
<E>22</E>
<E>21</E>
<E>20</E>
<E>19</E>
<E>18</E>
<E>17</E>
<E>16</E>
<E>15</E>
<E>14</E>
<E>13</E>
<E>12</E>
<E>11</E>
<E>10</E>
<E>9</E>
<E>8</E>
<E>7</E>
<E>6</E>
<E>5</E>
<E>4</E>
<E>3</E>
<E>2</E>
<E>1</E>
</Seat_names>
<Esd>
<E>4C80001,3</E>
<E>4CB0001,1</E>
<E>5900001,2</E>
<E>0,15</E>
<E>4CB0001,2</E>
<E>5C30001,8</E>
</Esd>
<Seat_characters>AAAAAAOOOOOOOOOOOOOOOAAAAAAAAAA</Seat_characters>
<Header_flags>00000000</Header_flags>
</E>
|
Jeg prøver å finne noe som gir tallet i klartekst, men jeg MENER ihvertfall at Seat_characters inneholder ett tegn pr. sete - A for Available, O for Occupied.
Så det handler egentlig bare om å snurre gjennom alle seksjonene og så telle antall karakterer av hver type.
Edit: Dette E-objektet kan tolkes til å representere én rad innenfor én seksjon. Hvis BYG-FA har 23 rader så stemmer den teorien. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
Hedon Forumsjef
Joined: 09 Sep 2002 Posts: 21961
|
Posted: 03.05.2015 13:45 Post subject: |
|
|
Tipper dette ender med at du lager en applikasjon som pøser på med så mye forespørsler på så kort tid at du setter hele Billettservice ute av spill. En uvøren DDoS. Det hadde vært toppen på kransekaka. |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 13:51 Post subject: |
|
|
Du har for lave ambisjoner. Jeg går for Skynet! _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
Ingeman Veteran
Joined: 07 Dec 2006 Posts: 2582
|
Posted: 03.05.2015 13:59 Post subject: |
|
|
"Note to self: Husk å levere unge i bursdagsselskap."
Haha, fantastisk! |
|
Back to top |
|
|
Strand Veteran
Joined: 23 Jul 2005 Posts: 6495
|
Posted: 03.05.2015 14:06 Post subject: |
|
|
Bøyer meg i støvet for engasjementet |
|
Back to top |
|
|
vemundo Veteran
Joined: 31 Jan 2006 Posts: 1381
|
Posted: 03.05.2015 14:20 Post subject: |
|
|
Kan muligens gjette at vanlig bruk av salkart-appen henter nye data hvert minutt:
eventInfo.config.availabilityRefreshRate = 60000; |
|
Back to top |
|
|
OrionPax Forumsjef
Joined: 12 Aug 2011 Posts: 9663 Location: Drammen
|
Posted: 03.05.2015 14:25 Post subject: |
|
|
Det virker jo ikke urimelig det; Holder flash-appen rimelig oppdatert og samtidig vil vel ikke den jevne bruker tilbringe så lang tid der inne at vi snakker om DDoS..
Ellers, Vemundo, begynner det å ligne på at dataene i den dekodede xml-fila er "self contained", i.e. om vi så ville ha tegnet opp kartet selv så har vi faktisk alt vi kan ønske oss i den.
De har kanskje gjort det sånn for å kunne tegne opp kartet selv om live data ikke skulle være tilgjengelige, I dunno. _________________ Rosenborg for alltid - uansett! | Troillprat.no |
|
Back to top |
|
|
vemundo Veteran
Joined: 31 Jan 2006 Posts: 1381
|
Posted: 03.05.2015 14:47 Post subject: |
|
|
Studerte xmlfila du sendte, her er mine tolkninger basert på eksempelet du la ut for et par poster siden:
Først <Seat_summary>.
<Tatt> er totalt antall plasser i dette <E> elementet.
<TL> har en liste med <E> elementer som hver inneholder oppsummering av en liten gruppe plasser. Innenfor denne lista er <Ett> en slags kode, der <Ett>000000000000</Ett> betyr "occupied", men det finnes mange koder for "available", så aner ikke hva dette brukes til. <C> inneholder antallet plasser og <Dc> er enten O/A altså "available" eller "occupied". Så i eksempelet ditt under her er det 15 occupied og så 3+3+2+8=16 available.
Code: |
<Seat_summary>
<Tatt>31</Tatt>
<TL>
<E>
<Ett>000000000000</Ett>
<C>15</C>
<Dc>O</Dc>
</E>
<E>
<Ett>000004C80001</Ett>
<C>3</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000004CB0001</Ett>
<C>3</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000005900001</Ett>
<C>2</C>
<Dc>A</Dc>
</E>
<E>
<Ett>000005C30001</Ett>
<C>8</C>
<Dc>A</Dc>
</E>
</TL>
</Seat_summary>
|
<Price_level> sier seg selv, denne tilsvarer prisinfo som finnes i html koden fra websidene:
Code: |
<Price_level>4</Price_level>
|
Med prisinfo fra html-koden for de ulike kategoriene kan vi telle billettsalg for ulike priskategorier også. Kategoriene er:
Code: |
<li id="priceCategory_1"><div class="ismCatName">Hent: QA, PA, OA</div><div class="ismPrice">255.00-395.00 NOK</div><div class="ismFee">(ink. 22.00-27.00 NOK avgifter.)</div></li>
<li id="priceCategory_2"><div class="ismCatName">Sparebank 1: CA og EA</div><div class="ismPrice">255.00-395.00 NOK</div><div class="ismFee">(ink. 22.00-27.00 NOK avgifter.)</div></li>
<li id="priceCategory_3"><div class="ismCatName">Hent: RA, NA, QB, PB, OB</div><div class="ismPrice">220.00-340.00 NOK</div><div class="ismFee">(ink. 22.00-27.00 NOK avgifter.)</div></li>
<li id="priceCategory_4"><div class="ismCatName">Sparebank 1: BA, FA, CB, DB, EB</div><div class="ismPrice">220.00-340.00 NOK</div><div class="ismFee">(ink. 22.00-27.00 NOK avgifter.)</div></li>
<li id="priceCategory_5"><div class="ismCatName">Hent: SA, MA, NB, MB</div><div class="ismPrice">135.00-215.00 NOK</div><div class="ismFee">(ink. 22.00 NOK avgifter.)</div></li>
<li id="priceCategory_6"><div class="ismCatName">Sparebank 1: AB, BB, FB, GB, AA, GA</div><div class="ismPrice">135.00-215.00 NOK</div><div class="ismFee">(ink. 22.00 NOK avgifter.)</div></li>
<li id="priceCategory_8"><div class="ismCatName">COOP Familie: TB, UB, VB, WB, XB</div><div class="ismPrice">90.00-215.00 NOK</div><div class="ismFee">(ink. 17.00-22.00 NOK avgifter.)</div></li>
<li id="priceCategory_9"><div class="ismCatName">Adressa: LB, KB, JB, IB, HB</div><div class="ismPrice">135.00-215.00 NOK</div><div class="ismFee">(ink. 22.00 NOK avgifter.)</div></li>
<li id="priceCategory_10"><div class="ismCatName">Kjernen Adressa: LA, KA, JA, IA, HA</div><div class="ismPrice">195.00 NOK</div><div class="ismFee">(ink. 22.00 NOK avgifter.)</div></li>
<li id="priceCategory_15"><div class="ismCatName">COOP Familie: TA, UA, VA, WA, XA</div><div class="ismPrice">90.00-215.00 NOK</div><div class="ismFee">(ink. 17.00-22.00 NOK avgifter.)</div></li>
|
Disse er alltid det samme:
Code: |
<Sub_price_level>0</Sub_price_level>
<Quality>0</Quality>
<Is_ga>false</Is_ga>
<Uses_extexp>false</Uses_extexp>
<Seating_type>0</Seating_type>
<Sell_class>00</Sell_class>
<Left_exit></Left_exit>
<Right_exit></Right_exit>
<Row_count>1</Row_count>
|
Antall seter i raden
Code: |
<Seat_count>31</Seat_count>
|
Rad og setenummer:
Code: |
<Row_names>
<E>31</E>
</Row_names>
<Seat_names>
<E>31</E>
<E>30</E>
<E>29</E>
<E>28</E>
<E>27</E>
<E>26</E>
<E>25</E>
<E>24</E>
<E>23</E>
<E>22</E>
<E>21</E>
<E>20</E>
<E>19</E>
<E>18</E>
<E>17</E>
<E>16</E>
<E>15</E>
<E>14</E>
<E>13</E>
<E>12</E>
<E>11</E>
<E>10</E>
<E>9</E>
<E>8</E>
<E>7</E>
<E>6</E>
<E>5</E>
<E>4</E>
<E>3</E>
<E>2</E>
<E>1</E>
</Seat_names>
|
<Esd> er også en slags oppsummering, men i samme rekkefølge som radnummerne. Code 0 betyr occupied, de andre kodene er alle available. Tallet etter komma er antall seter. Så eksempelet under er 3 + 1 + 2 avilable, 15 occupied, 2 + 8 available.
Code: |
<Esd>
<E>4C80001,3</E>
<E>4CB0001,1</E>
<E>5900001,2</E>
<E>0,15</E>
<E>4CB0001,2</E>
<E>5C30001,8</E>
</Esd>
|
<Seat_characters> er som du sier en streng med available/occupied for hvert sete. <Header_flags> er alltid det samme.
Code: |
<Seat_characters>AAAAAAOOOOOOOOOOOOOOOAAAAAAAAAA</Seat_characters>
<Header_flags>00000000</Header_flags>
</E>
|
OrionPax wrote: |
Jeg prøver å finne noe som gir tallet i klartekst, men jeg MENER ihvertfall at Seat_characters inneholder ett tegn pr. sete - A for Available, O for Occupied.
Så det handler egentlig bare om å snurre gjennom alle seksjonene og så telle antall karakterer av hver type. |
Ja, en kan enten parse <Seat_characters> eller sjekke om det er en <Dc>O</Dc> i <Seat_summary>.
En ting å legge merke til er at det ser ut til å være maks 50 seter i hver seksjon, selv om felter som ØØ er en enkelt rad med 2500 seter. Så ØØ er delt opp i 50 slike <E> elementer med samme rad osv. |
|
Back to top |
|
|
gisp! Legende
Joined: 04 Sep 2008 Posts: 10637
|
Posted: 03.05.2015 14:53 Post subject: |
|
|
OrionPax wrote: |
Edit: Dette E-objektet kan tolkes til å representere én rad innenfor én seksjon. Hvis BYG-FA har 23 rader så stemmer den teorien. |
Det er 20 rader på EM1 felt FA.
Stemmer imidlertid at det er 31 seter på de fleste radene i feltet. (31 seter var jo nevnt i kodesnutten.)
Rad 20 er nederst på bildet. På rad 27, 28 og 29 er det dog 23 seter. _________________ "Det er viktig å gå på banen for å være best mulig sjøl. Men det er langt viktigere å gå på banen for å gjøre medspillerne gode." |
|
Back to top |
|
|
vemundo Veteran
Joined: 31 Jan 2006 Posts: 1381
|
Posted: 03.05.2015 15:07 Post subject: |
|
|
Tipper det bare skyldes at noen av radene er delt opp i mer enn ett <E> element, kanskje pga brudd i sete-rekka f.eks. Dvs du har et par <E> element for FA med samme rad nummer. |
|
Back to top |
|
|
|