Introdução

Às vezes eu gosto de fazer perguntas completamente inúteis para os meus dados.

Não “qual foi o artista que eu mais ouvi?”, porque o last.fm responde isso facilmente. Também não “qual é a música mais tocada?”. Essas perguntas já vêm prontas.

A pergunta da vez foi outra:

Qual foi o artista que eu passei mais tempo sem ouvir antes de voltar a escutá-lo?

E já que estava nisso, resolvi perguntar a mesma coisa para músicas individuais.

A ideia é simples: para cada música (ou artista), calcular quanto tempo passou entre uma execução e a seguinte. Depois é só procurar o maior intervalo.

Baixando os dados

Uso o pacote scrobbler para baixar todo o meu histórico de execuções registrado no last.fm.

library(scrobbler)
library(tidyverse)

api_key <- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

shared_secret <- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

my_songs <-
  download_scrobbles(
    username = "grandeabobora",
    api_key = api_key
  ) |>
  as_tibble(
    tail(-1),
    validate = NULL,
    .name_repair = "check_unique"
  ) |>
  mutate(date = dmy_hm(date))

O objeto my_songs possui uma linha para cada scrobble, incluindo artista, álbum, música e a data da execução.

A partir daí, basta reorganizar os dados.

Quanto tempo fiquei sem ouvir cada música?

A estratégia foi ordenar as execuções por música e por data. Em seguida, dentro de cada grupo, usar lag() para recuperar a execução anterior da mesma música.

A diferença entre as duas datas é exatamente o intervalo que fiquei sem ouvi-la.

diferenca <-
  my_songs |>
  arrange(song_title, artist, date) |>
  group_by(song_title, artist) |>
  mutate(
    tempo_desde_ultimo_play = date - lag(date),
    dias_desde_ultimo_play =
      as.numeric(
        tempo_desde_ultimo_play,
        units = "days"
      )
  ) |>
  ungroup() |>
  select(
    artist,
    song_title,
    date,
    dias_desde_ultimo_play
  )

O topo da lista ficou assim:

diferenca |>
  arrange(desc(dias_desde_ultimo_play))
## # A tibble: 158,726 × 4
##    artist            song_title       date                dias_desde_ultimo_play
##    <chr>             <chr>            <dttm>                               <dbl>
##  1 The Strokes       Killing Lies     2026-07-31 12:05:00                  6098.
##  2 Nico Nicolaiewsky A Vida É Confus… 2025-06-25 01:22:00                  6033.
##  3 The Beach Boys    Don't Talk (Put… 2025-06-11 17:27:00                  6021.
##  4 Radiohead         Coke Babies      2026-02-15 12:44:00                  5948.
##  5 Arctic Monkeys    Fake Tales of S… 2026-02-05 12:10:00                  5940.
##  6 The Pastels       Over My Shoulder 2025-09-17 17:52:00                  5936.
##  7 The Pastels       Thru' Your Heart 2025-09-17 11:58:00                  5936.
##  8 Nico Nicolaiewsky Nada faz sentido 2025-06-24 17:10:00                  5912.
##  9 Elastica          Annie            2025-05-13 12:58:00                  5895.
## 10 Pelvs             Barbecue         2025-08-26 23:54:00                  5819.
## # ℹ 158,716 more rows

A campeã foi “Killing Lies”, do The Strokes.

Entre uma execução e outra passaram 6.098 dias.

Isso corresponde a aproximadamente 16 anos e 8 meses.

Na verdade, o resultado faz bastante sentido. Meu histórico do last.fm começa no fim dos anos 2000, então basta uma música ter tocado uma única vez naquela época e ser redescoberta recentemente para aparecer no topo da lista.

Aliás, olhar essa tabela foi uma viagem no tempo. Várias músicas que eu nem lembrava que existiam apareceram ali.

E se a pergunta for sobre artistas?

Depois fiquei curioso para saber quais artistas ficaram mais tempo esquecidos.

O código muda muito pouco. Basta agrupar por artista em vez de música.

diferenca_artistas <-
  my_songs |>
  arrange(artist, date) |>
  group_by(artist) |>
  mutate(
    tempo_desde_ultimo_play = date - lag(date),
    dias_desde_ultimo_play =
      as.numeric(
        tempo_desde_ultimo_play,
        units = "days"
      )
  ) |>
  ungroup() |>
  select(
    artist,
    dias_desde_ultimo_play
  )

O resultado é esse:

diferenca_artistas |>
  arrange(desc(dias_desde_ultimo_play))
## # A tibble: 158,726 × 2
##    artist               dias_desde_ultimo_play
##    <chr>                                 <dbl>
##  1 Redd Kross                            5581.
##  2 The Shazam                            5440.
##  3 Olho Seco                             5233.
##  4 Cólera                                5233.
##  5 Astrud Gilberto                       5106.
##  6 White Rabbits                         4758.
##  7 The Weirdos                           4680.
##  8 Jad Fair                              4613.
##  9 Erykah Badu                           4568.
## 10 Stiff Little Fingers                  4562.
## # ℹ 158,716 more rows

O artista que ficou mais tempo longe dos meus ouvidos foi Redd Kross.

Foram 5.581 dias, ou cerca de 15 anos e 3 meses, entre duas audições.

O interessante é que os resultados são bem diferentes dos obtidos para músicas.

Uma música pode ficar esquecida por mais de uma década, enquanto continuo ouvindo outras faixas do mesmo artista. Da mesma forma, um artista inteiro pode simplesmente desaparecer da minha rotina por anos até reaparecer por algum acaso, seja uma recomendação de alguém, um show, uma conversa ou uma playlist.

Uma métrica diferente

Gosto desse tipo de análise porque ela foge das estatísticas tradicionais do last.fm.

Todo mundo sabe descobrir quais artistas ouviu mais, quais discos dominaram determinado ano ou qual música tocou centenas de vezes.

Mas olhar para os maiores intervalos entre audições conta outra história.

É uma história sobre reencontros.

Sobre discos que fizeram sentido em uma fase da vida, desapareceram completamente e, muitos anos depois, voltaram como se nunca tivessem ido embora.

Acho que, no fim das contas, essa é uma estatística bem mais interessante do que simplesmente contar plays.