Songs to pave the seasons
I have analyzed my Spotify data1 for the period 2016-2024. The results accurately represent my actual music taste2.
Technical details
This is a suitable task for an array language, so I rely on BQN which is my favorite one:
⟨P⇐Parse⟩ ← •Import "../bqn-libs/json.bqn" @ ⊣ spd ← P •file.Chars "../supp/spdat/data.json"
Additional structural information is needed, namely index of the songs, artists, elapsed time, and the length of the desired result.
s‿a‿m‿l ← ⟨7, 8, 3, 1+↕20⟩
We define a (50 chars) dyadic block function to execute the queries:
Q ← {l≍˘∾(⍷𝕨⊸⊏˘)¨ l⊏ ((⍒(+´m⊸⊏˘)¨)⊸⊏ 𝕨⊸⊏˘⊐⊸⊔⊢) >1⊏¨ 𝕩}
Top songs
s Q spd
┌─ ╵ 1 "Countless Skies" 2 "Divertimento I, K.136: Allegro" 3 "The Numbers" 4 "Autre temps" 5 "Ghost of Perdition" 6 "Crossing the Road Material" 7 "Hoppípolla" 8 "Ether" 9 "Colossus" 10 "River" 11 "El Tete" 12 "Will o the Wisp" 13 "Pakumba" 14 "Damned Rope" 15 "Eternal Rains Will Come" 16 "La femme d'argent" 17 "Bajanda" 18 "Nimrodel - Medley" 19 "Breathe (In The Air) - 2011 Remastered Version" 20 "In The Shadow Of Our Pale Companion" ┘
Top artists
a Q spd
┌─ ╵ 1 "Opeth" 2 "Wolfgang Amadeus Mozart" 3 "Pink Floyd" 4 "Be'lakor" 5 "Sigur Rós" 6 "Coldplay" 7 "Mogwai" 8 "Chocolate Mc" 9 "Radiohead" 10 "Joaquín Sabina" 11 "Iron & Wine" 12 "Rammstein" 13 "Alcest" 14 "Buena Fe" 15 "Silvio Rodríguez" 16 "Amon Amarth" 17 "In Mourning" 18 "Lamb of God" 19 "Camel" 20 "Omnium Gatherum" ┘
Bonus: Opeth anthology
This is the Opeth album I would recommend to anyone. The query function needs to be modified a bit for generating it. But before that, let's look at the official discography:
lo ← (↕∘⌈+´÷≠) 7‿5‿9‿7‿8‿6‿8‿8‿7‿10‿7‿11‿10
Then:
O ← {lo (1⊸+∘⊣≍˘⊏) (⊢˝˘⊸∊⟜𝕨/⊏˘) ∾(⍷s‿a⊸⊏˘)¨ ((⍒(+´m⊸⊏˘)¨)⊸⊏ s⊸⊏˘⊐⊸⊔⊢) >1⊏¨ 𝕩}
Enjoy:
spd O˜⋈ "Opeth"
┌─ ╵ 1 "Ghost of Perdition" 2 "River" 3 "Will o the Wisp" 4 "Eternal Rains Will Come" 5 "The Drapery Falls" 6 "Elysian Woes" 7 "Burden" 8 "Harvest" ┘
Footnotes:
It is possible to request a detailed report of all user activity since the account was created. There are some interesting fields in the data, but more advanced information, such as genre, requires querying the Spotify Web API, which is beyond the scope of this post.