Site icon Gioxx.org

Spotify: salvare copie settimanali della New Music Friday

I can't live, if living is without you.

Photo by Sergi Kabrera on Unsplash

Amo Spotify per tanti buoni motivi e sono uno degli utilizzatori della prima ora da quando il servizio è approdato in Italia. Spotify, tra le varie, propone una serie parecchio nutrita di playlist che vengono alimentate in maniera più o meno automatica (ma non solo) e che cambiano continuamente.

Una di queste playlist è la New Music Friday, la quale contiene le nuove tracce che vengono pubblicate ogni venerdì. Se ti dimentichi di ascoltarla però settimanalmente, non potrai tornare indietro per recuperare quella della settimana scorsa, cosa che mi ha sempre dato più o meno fastidio e che ho finalmente “corretto“, ti spiego come.

New Music Friday: tornare indietro nel tempo

Lo volevo fare da qualche tempo e ho approfittato di qualche giorno libero tra natale e capodanno per dedicarmi a questa attività durante la nanna del pupo. Ho trovato una base di partenza molto più che valida sviluppata da Regson Do Rego e rilasciata su GitHub (github.com/RegsonDR/spotify-save-discover-weekly), io ho solo dovuto modificare qualcosina proponendo un secondo metodo di salvataggio della playlist rispetto a Regson che ha pensato di salvare le tracce della playlist originale in una playlist precisa e precedentemente creata dall’utente, mettendo in coda le nuove di settimana in settimana.

Di cosa si tratta

Di API ufficiali di Spotify (developer.spotify.com) pilotate tramite Python e passando per output JSON che sono tutto sommato facili da leggere, manipolare, utilizzare. La maggior parte delle chiamate API punta ovviamente alle Playlist (developer.spotify.com/console/playlists). Una volta creata un’applicazione personalizzata da lasciare lì in modalità “sviluppo” si potrà effettivamente interagire con il proprio account di Spotify leggendo e scrivendo dati che normalmente noi tutti accediamo tramite l’interfaccia grafica del programma figlio del team svedese di Daniel Ek.

Note per Nerd

Info

Quello che vado a spiegare qui di seguito ti permetterà di usare e salvare il tutto sul tuo account, ricostruisci “a casa tua” quello che ho fatto io, senza passare dal mio account. Se non sei interessato, salta tutto questo paragrafo e portati a “Per tutti gli altri“.

Per i più tecnici l’invito è quello di dare un’occhiata al file README del repository GitHub che ho aggiornato dopo aver forkato direttamente quello originale di Regson e prendendo poi la mia strada leggermente più completa. Qui è dove te lo traduco in italiano, dato che il file originale è in inglese e ho quindi preferito mantenerlo tale aggiungendo le informazioni relative alla mia modifica.

La prima parte, quella autorizzativa, è rimasta del tutto invariata (fatta eccezione per la modifica di una variabile all’interno del file .sample.env). Quello che dovrai fare è forkare a tua volta il mio repository GitHub, andare sul sito web ufficiale di Spotify dedicato agli sviluppatori e creare una nuova applicazione. Dalle un nome e una descrizione, otterrai un Client ID e un Client Secret (quest’ultimo nascosto per comportamento predefinito) che ti serviranno per collegare poi gli script al tuo account Spotify tramite l’applicazione che stai creando. Inizia a riportare i due dati all’interno del file .sample.env.

Compila anche il campo USER_ID e REDIRECT_URI all’interno dello stesso file, metti nel primo campo il nome utente con il quale sei attualmente registrato su Spotify, nel secondo invece un qualsiasi sito web, vale anche inserire https://gioxx.org, servirà solo per catturare in seguito un token che ti servirà per andare avanti. Ricorda di non caricare in nessun caso questo file online.

Inizia già a portarti avanti specificando (sempre nello stesso file) anche l’ID della playlist che vuoi salvare. Per recuperare l’ID ti basterà aprire il client di Spotify, fare clic con il tasto destro sulla playlist e scegliere CondividiCopia link alla playlist. Dovresti ottenere qualcosa di simile a questo:

https://open.spotify.com/playlist/359Eef7ftG3MiMK0UjDxfU?si=db9b1ee3e4194ea9

In questo caso, l’ID che ti serve è quello che si trova prima di ?si=, quindi 359Eef7ftG3MiMK0UjDxfU, dovrai inserirlo subito dopo NEW_MUSIC_FRIDAY_ID= all’interno del file .sample.env. Se vuoi usare il metodo di “append” delle tracce settimanali, crea una nuova playlist vuota all’interno del tuo account Spotify e copiane l’ID (stessa maniera appena utilizzata) andandolo poi a specificare dopo SAVE_TO_ID=.

Il tuo file .sample.env sarà ora quasi del tutto completo, manca all’appello solo la variabile REFRESH_TOKEN. Salva questo file nominandolo .env (sì, hai visto bene, non ha nome, ha solo il .env che ne identifica l’estensione), dovrà trovarsi nella stessa identica cartella all’interno della quale c’è lo script authorization.py (quindi la setup).

Se stai utilizzando una macchina con già Python a bordo, porta a bordo il necessario specificato nel file requirements.txt lanciando un semplice pip install -r requirements.txt (se non hai già Python, dovrai installarlo prima). Lancia ora l’esecuzione dello script authorization.py per generare un URL al quale collegarti (dovrai copiare e incollarlo nel browser, quindi autenticarti e ottenere un URL di risposta, copialo tutto e incollalo nella finestra di Terminale che stai usando per ottenere il REFRESH_TOKEN). Copia il REFRESH_TOKEN appena ottenuto all’interno del file env.

Hai terminato la procedura di collegamento tra i tuoi script Python e il tuo account Spotify (e relativa applicazione che farà da ponte tra i due).

A questo punto potrai eseguire:

Allo stato attuale ho previsto che nmf.py specifichi manualmente il nome e la descrizione della playlist salvata in copia carbone. Se non ti sta bene che le copie delle playlist si chiamino “New Music Friday Italia del gg/mm/aaaa” e che riportino nella descrizione “Ogni Venerdì, le migliori nuove uscite, copia salvata il gg/mm/aaaa“, dovrai modificare lo script e andare a ritoccare le variabili name e description nella funzione create_playlist:

def create_playlist(access_token):
url = "https://api.spotify.com/v1/users/%s/playlists" % USER_ID
payload = {
"name": "New Music Friday Italia del %s" % d1,
"description": "Ogni Venerdì, le migliori nuove uscite, copia salvata il %s" % d1
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer %s" % access_token
}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json()

Ho in mente una possibile modifica futura semplice che potrebbe automaticamente ottenere il nome della playlist che intendi salvare e creare quindi la sua copia basandosi sui dati catturati, senza la necessità di ritoccare lo script. Aggiornerò questo articolo appena sarà disponibile.

Salvo errori, tutto dovrebbe andare a buon fine (in caso contrario, l’output di Python sarà visibile sul Terminale e potrai quindi capire cosa sta andando storto) e dovresti quindi vedere la tua playlist ora popolata (o clonata).

Se vuoi e se hai un account GitHub puoi chiedere al servizio di Microsoft di fare tutto al posto tuo, programmando una o entrambe le azioni il venerdì mattina, quando la playlist viene rinnovata da Spotify, un po’ come ho fatto io tramite GitHub Actions. I workflow sono entrambi già pronti e disponibili nel repository, forkandolo otterrai pure loro, dovrai solo completare l’opera portando a bordo dei Secrets del repository i dettagli necessari al funzionamento degli script (quindi CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, NEW_MUSIC_FRIDAY_ID, SAVE_TO_ID e USER_ID), come spiegato all’indirizzo github.com/gioxx/spotify-save-new-music-friday#4-github-actions.

Per tutti gli altri

Per i meno avvezzi, la faccio semplice: ho creato un doppio processo programmato che alle 8:00 di ogni venerdì farà partire la creazione di una nuova playlist “copia carbone” della New Music Friday Italia, salvandola nel mio account e rendendola pubblica, accessibile a chiunque ricercherà “New Music Friday Italia del XX/XX/XXXX” (o passerà sul mio account) dove ovviamente XX/XX/XXXX andrà sostituito con la data giorno/mese/anno del venerdì che ti interessa, a partire da venerdì 31 dicembre 2021. Il secondo processo provvederà invece a prendere le tracce della playlist e le “appenderà” alla playlist “New Music Friday Italia 2022“, anch’essa pubblicata sul mio profilo, accessibile per chiunque, che poi è il funzionamento pensato e sviluppato da Regson.

In conclusione

Mi pare di aver detto tutto. Ho cercato di inserire nel repository GitHub (e in parte anche in questo articolo) tutto quello che c’è da sapere per poter replicare il tutto da zero, l’intenzione è però quella di rendere tutto più semplice, mettendo direttamente io a disposizione le varie playlist raccolte nel corso del tempo.

Se hai dubbi, l’area commenti è giusto un colpo di scroll più in basso, usala :-)

#StaySafe


Immagine di copertina:
Sergi Kabrera on Unsplash
Crediti:
developer.spotify.com/console
docs.python.org/3/library/venv.html

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version