Superliga-Datahoarding

Author:

Jeg har et lettere autistisk forhold til data, og satte mig derfor for at downloade resultaterne for samtlige 4300 fodboldkampe i Superligaen siden 2001. Det skulle ske via R-studio, Rscripts og en smule hjælp fra mine gamle nye ven Chatgtp og dennes kammersjuk Bard.

Hvad jeg allerede vidste fra tidligere tider:
– Superliga.dk/stats bygger på Optas datamodel og leverer data til Superliga i Json-formatet.
– Man kan hente alt det man lyster fra Superliga.dk via Chromes “Undersøger” panel og lidt meget primitiv datamanipulation.
– Denne primitive datamanipulation/højreklik og gem tilgang måtte kunne automatiseres.
– Jeg kan kun programmere i Comal80 og Rstudio, og da dette ikke er slutfirserne, faldt valget på Rstudio.

Under Superliga.dk/kampprogram har man adgang til alle kampe siden 2001. Hver sæson har et sæsonid, og hver kamp i hver sæson har et event id. Hvis man derfor først henter alle sæsonids og derefter alle eventids for hver sæsonid, får man samtlige kampe i superligaen.

Det kunne komme til at se sådanne her ud, dog præsterede jeg at lave en fejl i mappestrukturen filerne gemmes i, således at det i stedet for at hedde f.eks. “2001/2002” er to mapper indeni hinanden. Kampene for 2001/2002 sæsonen endte inde i mappen “2002” som var indeni “2001”.

library(jsonlite)
library(httr)

# Basis URL for at hente data for hver sæson
base_url <- "https://api.superliga.dk/events-v2?appName=dk.releaze.livecenter.spdk&access_token=5b6ab6f5eb84c60031bbbd24&env=production&locale=da&seasonId="

# Sæsonids trukket ud fra anden data
season_ids <- c(123, 126, 127, 128, 129, 130, 3080, 3732, 4466, 5240, 6073, 6892, 7677, 8559, 9524, 10392, 11488, 12725, 13958, 15429, 16387, 17703, 20962)

# Opret hovedmappen for al data
main_dir <- "Superliga_all_time"
dir.create(main_dir, recursive = TRUE, showWarnings = FALSE)

for(id in season_ids) {
  # Hent data for hver sæson
  url <- paste0(base_url, id)
  response <- GET(url)
  data <- content(response, "parsed", "application/json")
  
  # Tjek for det første element i 'events' for at finde 'tournamentYear'
  if(length(data$events) > 0) {
    tournament_year <- data$events[[1]]$tournamentYear
    
    # Opret en mappe for sæsonen baseret på 'tournamentYear'
    season_dir <- file.path(main_dir, as.character(tournament_year))
    dir.create(season_dir, recursive = TRUE, showWarnings = FALSE)
    
    # Gem data for sæsonen i en fil indenfor sæsonens mappe
    file_name <- file.path(season_dir, paste0("season_", id, ".json"))
    write_json(data, file_name)
    
    cat("Data for season ID", id, "with tournamentYear", tournament_year, "saved in", file_name, "\n")
  } else {
    cat("No events found for season ID", id, "\n")
  }
}

Det betød at filerne var besværlige at arbejde med, og jeg kopierede derfor alle sammen ind i en samlet mappe efterfølgende.
Herefter forsøgte jeg i et par timer at kreere et script, som ville loope igennem hver enkelt fil, trække alle kampene ud med data, hjemmehold, udehold og antal mål for hvert hold. Det lykkedes aldrig at få helt kønt.

I stedet løste jeg det ved at importere hver enkelt sæson til Excel manuelt via Power Query. Det var relativt nemt, men gjorde mig også opmærksom på at datastrukturen for 3 sæsoner i midten af perioden er anderledes struktureret. Måske en anden dataudbyder for den periode?
Fodbold er et spil med uafgjort, så for at finde ud af hvem der vandt hver enkelt kamp, måtte Excels HVIS-funktion i spil. Det tog mig desværre mindst 30 minutter at indse forskellen på IF-funktionens brug af kommaer vs. HVIS forkærlighed for semikolonner.

Efterfølgende var spørgsmålet om hvorledes man nemmest kunne sortere i dataen. Jeg er stadig i en udviklingsfase vedr. dette.
Oprindeligt tænkte jeg man kunne benytte Access eller Excel, men mine evner er for ringe. Derfor har jeg manuelt kopieret hver sæson ind i en fortløbende tabel og gemt det som en csv-fil. Denne har jeg så importeret til MySQL database her på sitet . Det skaber en hurtig sortering/filteringsmulighed via forespørgsler i PHPadmin-panelet. Udfordringen er så ønsket om at kunne tilgå dataen når man sidder på Guldfasanen eller Prinsen en lørdag aften med øllen i blodet og snakken falder på hvor mange kampe Herfølge endeligt har vundet på hjemmebane i Superliga siden 2001?
Svaret er 8 som billedet nedenfor viser, hvis man skulle finde det interessant.

Hvis jeg i den kommende tid bliver klog nok, skal det nok lykkedes mig at skabe en fuldstændig usikker forespørgselskabelon i PHP-regi, der lader mig tilgå databasen udefra. Alternativt må jeg tage mig sammen og finde en app der virker til det.