Spotify Rest API med node.js og p5.js

Spotify’s API er på flere måder mere komplekst end dem vi har kigget på indtil videre. Det er det bl.a fordi det kræver et reelt spotify login (premium), for at identificere en klient, og give adgang til funktionerne.

Denne del af API’et vil vi ikke gå i detaljer med her – i eksemplet nedenfor er der brugt den login metode, som Spotify selv giver som eksempel i deres repo.

Først og fremmest skal du gå ind på spotify developer og oprette en konto og få et client_id. Den form for identifikation vi bruger i dette projekt kræver ikke en client_secret. Til gengæld er den temmelig kortvarig og egentlig kun brugbar til testformål. Hvis du har mod på at se hvordan det foregår, kan du forsøge at følge javascriptet i index.html.

Under alle omstændigheder skal du gøre følgende, når du har fået fat i dit client_id:

  1. Opret en app i dit dashboard
  2. Gå ind på app’en og find settings – sæt denne callback-url:
    1. http://localhost:8888
  3. Download mappen med eksemplet her – eller find det på github her
  4. Kør npm install i mappen for at installere de nødvendige dependencies
  5. Åbn index.html og skriv dit client_id ind i variablen
  6. Kør node app.js
  7. Åbn din browser: localhost:8888

Opgaver

Det sjove i de her filer sker sådan set først når vi har fået adgang til spotifys API. Projektet bruger et ekstra javascript ved navn spotify-web-api.js til at søge mv. Du kan læse dokumentationen her.

Åbn sketch.js og prøv at følge koden – her er det ikke så kompliceret. Foreløbig kan man udelukkende søge i sange – men man kunne tilføje meget mere. Som du kan se kan man faktisk både afspille, manipulere playlister, venner, hente nærmest uendelig meget information – etc etc. Man kunne oprette en socket server og dele en playliste. Man kunne…

Se om du kan løse en eller flere af følgende:

  1. oprette en playliste
  2. afspille en sang
  3. oprette en websocket og lade flere brugere arbejde på en playlist

 

Leave a comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *