Ole Martin lager Fantasy Football-tjeneste, og ble banna i prosessen: - Mildt sagt ikke topp stemning

- Ble kanskje gjort litt for mange requests til API-ene, forteller Ole Martin Borge, bak viewfantasystats.com.

- Det har blitt datauthenting fra laptop og 4G på hengekøyetur i marka, så jeg kan vel si at en automatisering av dette hadde gjort seg på sikt, skriver Ole Martin Borge. 📸: Privat
- Det har blitt datauthenting fra laptop og 4G på hengekøyetur i marka, så jeg kan vel si at en automatisering av dette hadde gjort seg på sikt, skriver Ole Martin Borge. 📸: Privat Vis mer

Fotball er verdens mest populære tilskuersport, og enten man liker sporten eller ikke, så finnes det noe som heter Fantasy Football som gjør sporten enda mer severdig.

Fantasy Football er i korte trekk et spill hvor man setter opp et imaginært lag bestående av virkelige fotballspillere. Laget ditt scorer poeng basert på spillernes faktiske prestasjoner i kamper de spiller hver serierunde. Vanligvis er Fantasy Football basert på én divisjon i et bestemt land, som for eksempel Fantasy Premier League (FPL) i England eller Eliteserien Fantasy (ESF) i Norge.

Interessen for fantasy er også stadig økende. FPL har de siste 20-årene økt fra ca. 100.000 deltagere til nesten 11 millioner. Eliteserien Fantasy er naturlig nok ikke like stort, men har idag nesten 36.000 spillere.

Den økende interessen for fantasy, i tillegg til mye tilgjengelig fantasy relevant data, har medført at det er blitt laget flere fantasy relaterte nettsider. Min, viewfantasystats.com, er en av dem.

Hva er viewfantasystats?

I tråd med navnet, er viewfantasystats en nettside for visning av fantasy-relatert statistikk for både ESF og FPL. Man kan bruke ulike algoritmer som beregner hvilke lag eller kombinasjoner av lag som er lure å velge spillere fra for ulike periode av sesongen.

Selv om Norge ikke nødvendigvis er kjent for å være suverene i fotball, har vi markert oss som en solid fantasy
nasjon, både når det kommer til prestasjoner og deltagelse. I år spiller ca. 240.000 nordmenn fpl, dvs ca hver 23
nordmann. Plottet viser den nasjonale andelen blant de beste 10.000 plasseringene av Fantasy Premier League i
2019/2020. England kommer naturlig nok på førsteplass, men Norge markerer seg med en solid andreplass med
nesten 11% andel blant topp 10.000. Her har jeg brukt Pythonpakken geopandas til å vise data i kartformat.
Selv om Norge ikke nødvendigvis er kjent for å være suverene i fotball, har vi markert oss som en solid fantasy nasjon, både når det kommer til prestasjoner og deltagelse. I år spiller ca. 240.000 nordmenn fpl, dvs ca hver 23 nordmann. Plottet viser den nasjonale andelen blant de beste 10.000 plasseringene av Fantasy Premier League i 2019/2020. England kommer naturlig nok på førsteplass, men Norge markerer seg med en solid andreplass med nesten 11% andel blant topp 10.000. Her har jeg brukt Pythonpakken geopandas til å vise data i kartformat. Vis mer

En viktig del av nettsiden er å kunne gi informasjon som er med på å løfte fantasy-opplevelsen. Eksempelvis kan man se statistikk om hvilke spillere andre deltagere har på lagene sine for ulike plasseringer.

En spiller med nesten 100% eierandel vil ikke ha stor innvirkning på plasseringen din, siden alle vil få disse poengene. En spiller eid av kun 5% derimot, en såkalt diff, vil kunne ha en mye større positiv innvirkning på poengene dine, og vil derfor være vesentlig artigere å følge med på. Denne infoen er, personlig, avgjørende for at jeg heller kan velge å se Jerv - Odd framfor Molde - RBK.

Da den ble publisert ble nettsiden delt rundt på Twitter og i fantasy-miljøet. Dette skapte engasjement og når har siden ca. 500 brukere i uka.

Slik ble nettsiden til

Historien til viewfantasystats starter noen år tilbake da jeg og noen kompiser fant ut at mesteparten av dataen brukt i spillet var tilgjengelig gjennom åpne API-endepunkter.

Etter å ha spilt fantasy i mange år hadde jeg gjort meg opp noen meninger om mangler og features i spillet. Det var derfor et lite rush å vite at jeg nå hadde tilgang til dataen og kunne forme den som jeg selv ville.

image: Ole Martin lager Fantasy Football-tjeneste, og ble banna i prosessen: - Mildt sagt ikke topp stemning

Den første perioden av viewfantasystats sin historie gikk til å skrive kode for uthenting, prosessering og lagring av data. Litt stanging og banning hørte naturlig nok med i oppstarten.

Det er spesielt en episode jeg husker godt. I min store entusiasme for rykende fersk fpl-data, ble det kanskje gjort litt for mange requests til fantasy-API-ene en kveld. Plutselig dukket det opp noen ukjente feilmeldinger i Python-scriptene mine. Da både brodern og pappa ropte fra rommene sine at de plutselig ikke lenger kom inn på fantasy-siden, begynte jeg å ane ugler i mosen.

Det var mildt sagt ikke topp stemning i heimen da huset var blitt IP-bannet fra fantasy siden, mest sannsynlig for DDOS angrep…

Hva kan du se på nettsiden?

Det skulle gå et par år før separate Python-scripts skulle bevege seg over til å bli en faktisk nettside.

I første omgang var fokuset på FPL. I lys av at Premier League er en god del mer populært enn Eliteserien globalt, har det også blitt laget færre fantasy-relaterte nettsider for ESF enn for FPL.

En motivasjonsboost for nettsiden kom derfor tidlig dette året da jeg innså at Eliteserien sin fantasy også hadde åpne api-er som var så og si identiske som FPL sine, og nettsiden ble dermed raskt oppdater for statistikk for ESF også.

Etter deling på Twitter fikk jeg raskt tilbakemelding på at var noe som Eliteserien fantasy spillere likte.

Django, React og deploy fra hengekøya

Nettsiden er bygd opp av Django med Python og React.

At Python ble backend var jeg vel aldri i tvil om. Prosjektet inneholder mye scripting, beregninger, statistikk og visualiseringer, hvor Python med pakker som numpy, pandas og matplotlib kommer godt med. At jeg endte med Django er kanskje litt tilfeldig, men en kompis av meg foreslo Django, og da var jeg bare noen Youtube-videoer unna en første versjon av nettsiden.

Data som vises på nettsiden hentes først ut lokalt med Python-scripts, før det lagres i en SQLite database fil. SQLite er en “server-less database” og er default i Django-oppsettet, og er en veldig enkel måte å lagre data på. Så enkel at jeg fortsatt ikke har gått over til en annen databasetype.

- En kul forside står høyt på lista, men jeg må nok inn i Figma å massere skissene mine litt mer der. Litt refakturering og kodeopprydning hadde nok også gjort seg, det er jo klart. 📸: Privat
- En kul forside står høyt på lista, men jeg må nok inn i Figma å massere skissene mine litt mer der. Litt refakturering og kodeopprydning hadde nok også gjort seg, det er jo klart. 📸: Privat Vis mer

Etter at SQLite filen er oppdatert, gjør jeg en deploy til PythonAnywhere hvor prosjektet er hostet.

Typisk for deler av statistikken på nettsiden er at data må hentes ut i visse tidsrom. Normalt er dette akkurat når en ny runde har begynt, fordi man da får tilgang til å hente ut alle oppdaterte lag samtidig som rangeringene ikke har blitt endret av at runden har begynt og spillere har fått poeng.

Dette medfører at jeg må være fleksibel både til tid og lokasjon når det kommer til datauthenting og deploy. Det har for eksempel blitt datauthenting fra laptop og 4G på hengekøyetur i marka, så jeg kan vel si at en automatisering av dette hadde gjort seg på sikt.

Hvor går veien videre?

Jeg har en stor backlog, så mangel på oppgaver skal det ikke stå på hvertfall. Det er mye jeg vil gjøre, så det handler vel bare om å ta seg tid.

En kul forside står høyt på lista, men jeg må nok inn i Figma å massere skissene mine litt mer der. Litt refakturering og kodeopprydning hadde nok også gjort seg, det er jo klart.

Generelt vil nok hovedfokuset være på Eliteserien. Årets Eliteseriesesong er over, men jeg har ønske om å få mest mulig ny funksjonalitet klart til sesongstart i April 2023. Så det er jo klart at det er en motivasjonsboost at flere enn pappa og brodern bruker siden.

Inspirasjon: