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: 160,224 × 4
##    artist            song_title       date                dias_desde_ultimo_play
##    <chr>             <chr>            <dttm>                               <dbl>
##  1 Fito Paez         LLeva            2026-08-13 22:08:00                  6361.
##  2 Fito Paez         Acerca del niño… 2026-08-14 15:10:00                  6223.
##  3 Yeah Yeah Yeahs   Man              2026-09-06 10:20:00                  6216.
##  4 The Strokes       Killing Lies     2026-07-31 12:05:00                  6098.
##  5 Nico Nicolaiewsky A Vida É Confus… 2025-06-25 01:22:00                  6033.
##  6 The Beach Boys    Don't Talk (Put… 2025-06-11 17:27:00                  6021.
##  7 Radiohead         Coke Babies      2026-02-15 12:44:00                  5948.
##  8 Arctic Monkeys    Fake Tales of S… 2026-02-05 12:10:00                  5940.
##  9 The Pastels       Over My Shoulder 2025-09-17 17:52:00                  5936.
## 10 The Pastels       Thru' Your Heart 2025-09-17 11:58:00                  5936.
## # ℹ 160,214 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: 160,224 × 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 Anitta                           4629.
##  9 Jad Fair                         4613.
## 10 Erykah Badu                      4568.
## # ℹ 160,214 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.