Date sport de la Roayze | R-BLOGGERS

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R.IRESMI.NETși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Alergătorii s -au estompat

Alergători-cc-by de ~ jar {}

Am explorat deja cum să vă obțineți activitățile de la Strava. Poate folosiți în schimb Roayze? În acest caz, puteți face unele răzuitoare web pentru a vă exporta datele.

library(httr)
library(rvest)
library(glue)
library(readr)
library(dplyr)
library(stringr)
library(tidyr)
library(lubridate)
library(hms)
library(janitor)
library(ggplot2)
library(forcats)
library(tibble)
library(purrr)

RUNALYZE vă permite să descărcați datele tabulare ca CSV (deci fără piese). Singura parte complicată este autentificarea: trebuie să obțineți un jeton.

token <- GET("https://runalyze.com/login") |> 
  content() |>
  html_elements("input(name=_csrf_token)") |> 
  html_attr("value")

POST("https://runalyze.com/login",
     body = list(
       "_username" = Sys.getenv("RUNALYZE_U"),
       "_password" = Sys.getenv("RUNALYZE_P"),
       "_remember_me" = "on",
       "_csrf_token" = token))

GET("https://runalyze.com/_internal/data/activities/all",
    write_disk(glue("{tempdir()}/runalyze.csv"), overwrite = TRUE))

Destul de ușor. Apoi, îți primești toate activitățile.

Există, de asemenea, o API pentru alte utilizări, dar nu am încercat -o. Nici nu am încercat să obțin datele GPS (pare mai puțin simplu).

# to build from : distinct(activites, sportid)
sports <- tribble(
  ~sportid, ~sport,               ~colour,
  400452,   "running",            "yellow",
  400454,   "cycling",            "orange",
  422335,   "nordic skiing",      "lightblue",
  422336,   "mountain skiing",    "blue",
  453960,   "alpinism",           "darkgreen",
  400453,   "swimming",           "deepskyblue",
  400455,   "stretching",         "pink",
  1304290,  "walking and others", "grey",    # hiking
  400456,   "walking and others", "grey",    # crossfit
  400457,   "walking and others", "grey") |> # hiking
  mutate(sport = fct_rev(as_factor(sport)))

activities <- read_csv(glue("{tempdir()}/runalyze.csv"),
                       guess_max = 1e4) |> 
  clean_names() |> 
  mutate(across(c(time, created, edited), as_datetime),
         across(c(s, elapsed_time), hms),
         vdate = ymd(paste("2024", month(time), day(time), sep = "-"))) |> 
  left_join(sports, join_by(sportid))
activities |> 
  group_by(ym = format(time, "%Y-%m"), sport) |> 
  summarise(time_s = sum(s, na.rm = TRUE),
            distance = sum(distance, na.rm = TRUE),
            .groups = "drop") |> 
  mutate(hours = as.numeric(time_s, "hours")) |> 
  ggplot(aes(ym, hours, fill = sport)) +
  geom_col(just = 0) +
  scale_x_discrete(
    breaks = (x) keep(x, substr(x, 6, 7) == "01"),
    labels = (x) ifelse(substr(x, 6, 7) == "01", substr(x, 1, 4), "")) +
  scale_fill_manual(values = sports |> 
                      select(sport, colour) |> 
                      deframe()) +
  labs(title = "Activities",
       subtitle = "Monthly time",
       x = "month",
       y = "h",
       fill = "activities") +
  theme(axis.title.y = element_text(angle = 0, vjust = 0.5))
Un bară de activități sportive pe lunăUn bară de activități sportive pe lună

Figura 1: Datele mele de la Runayze

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.