Mastodon e Last.fm: creare un "Now Playing" sul proprio profilo
Da qualche tempo quando leggo qualcosina in merito all'automazione di attività informatiche varie finisco per imbattermi spesso in n8n, un software di automazione che pare molto interessante. Sebbene abbia una spiccata propensione a nominare AI un po' ovunque è uno strumento open source e self-hostabile quindi...

Ragionando un po' sulle cose automatizzabili mi son trovato a pensare di pubblicare su Mastodon un toot con la musica a cui metto "Mi piace" su Tidal sfruttando le API di Last.fm.
Qui arriva il punto in cui dovrei far presente - come mi ha fatto giustamente notare Cedmax - che l'idea del "Mi piace" è andata totalmente a ramengo perché Last.fm non prende le informazioni di quel tipo da Tidal. Ho quindi virato sull'usare le API che prendessero l'ultima canzone ascoltata.
Solo che l'idea - una volta implementata - non mi pagava per niente l'occhio. Per fortuna ci sono persone ben più in gamba di me che han trovato una soluzione meravigliosa: perché non mettere 'sta informazione direttamente nel profilo? Capolavoro.

Come ho fatto?
In realtà 'sta cosa è di una semplicità esagerata e se avete un minimo di infarinatura di come funzionano le API probabilmente riuscite a farlo pure meglio di me, ma lo riporto comunque anche solo per tenerne traccia da qualche parte.
- crea un'app su Last.fm per avere accesso alle API.
- crea un'app su Mastodon che abbia accesso al tuo profilo in scrittura (https://ISTANZAMASTODON.TUA/settings/applications).
- su n8n (io l'ho fatto così, ma diventa semplice pure fare uno script bash che faccia la stessa cosa) imposta un semplicissimo workflow come il seguente.

- L'HTTP Request GET verso i server di Last.fm usa questo URL:
https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=TUOUTENTE&api_key=TUAAPI&format=json&limit=1
- L'HTTP Request PATCH verso il tuo server Mastodon usa questo URL:
https://ISTANZAMASTODON.TUA/api/v1/accounts/update_credentials
Occhio che per far funzionare quest'ultima bisogna anche specificare un header da inviare.
Nome: Authorization
Value: Bearer ACCESSTOKENDELLATUAAPPMASTODON (sì, ci vuole la scritta "Bearer" + spazio prima del token)
Ovviamente (cioè, non ovviamente, ma vabbeh) c'è anche da mandare un contenuto in 'sta PATCH request. Nel body andiamo dunque a inserire un JSON che nel mio caso sarà formattato come segue:
{
"fields_attributes": {
"0": {
"name": "Blog",
"value": "https://cantina.ragnate.la"
},
"1": {
"name": "Telegram",
"value": "https://spicc.io/ed"
},
"2": {
"name": "Podcast",
"value": "https://polpoepatata.it"
},
"3": {
"name": "Now Playing",
"value": "🎶 {{ $json.recenttracks.track[0].name }} - {{ $json.recenttracks.track[0].artist['#text'] }}"
}
}
}
Fatto (ovviamente i valori del mio "Now Playing" vengono da come li leggo dal JSON che mi spara fuori Last.fm)!
Ora si può impostare ogni quanto far girare 'sto accrocchio (io ho messo ogni mezz'oretta, non mi importa che sia in tempo reale) e il profilo Mastodon si aggiornerà in automatico con l'ultimo ascolto fatto su Last.fm!
Disclaimer 1: sì, sì, so che è di una banalità assurda, ma mi piace fare piccoli accrocchi da usare per testare cose nuove (e poi, dai, come ha detto qualcuno il tocco "MSN-like" ci sta in questo 2025).
Disclaimer 2: sì, sì, so che si potrebbe pure attaccarci del codice così da non mandare la PATCH request a Mastodon se la canzone su Last.fm non viene aggiornata. Vi sembro uno che ottimizza cose di questo tipo? (in teoria dovrei, magari in futuro...)
Disclaimer 3: come al solito la nota più importante finisce alla fine. Non sono riuscito purtroppo a far aggiornare un solo campo di quei "Field Attributes" e quindi ogni volta li riscrive tutti e quattro. Penso sia un limite delle API Mastodon, ma non sono sicuro.