Libre.fm の API を使って scrobble したメモ

情報少ないし Last.fm 用のライブラリがそのままでは動かなかったりで無駄に時間かかった……。

セッションキー取得

● /etc/hosts 修正

Using_turtle | Wiki | foocorp / librefm | GitLab
を参考に、、、なんだけどここに書かれてるアドレス(149.20.54.250)ではダメだった。

213.138.110.190 post.audioscrobbler.com
213.138.110.190 ws.audioscrobbler.com

これで動いた。


トークン取得

api_key, api_sig は何でも良いっぽいです。

https://gitlab.com/foocorp/gnu-fm/blob/master/gnukebox/README
https://git.gnu.io/gnu/gnu-fm/blob/master/gnukebox/README

The api_key and api_sig are only checked to be 32 characters long since Last.FM shared secrets cannot be checked

curl "https://libre.fm/2.0/" \
  --data "method=auth.getToken&api_key=01234567890123456789012345678901&api_sig=01234567890123456789012345678901"

response:
<?xml version="1.0"?>
<lfm status="ok">
  <token>56b37b9c8b8a66e435cecd4a189a....</token>
</lfm>


● 認証

ブラウザで開いて許可する。

https://libre.fm/api/auth/?api_key=01234567890123456789012345678901&token={token}


● セッションキー取得

curl "http://ws.audioscrobbler.com/2.0/" \
  --data "method=auth.getSession&api_key=01234567890123456789012345678901&api_sig=dummy&token={token}"

response:
<lfm status="ok">
	<session>
		<name>sonota88</name>
		<key>4d423dd1379fb96e0ed1e4eef49c....</key>
		<subscriber>0</subscriber>
	</session>
</lfm>

キーの値は保存しておいて後の updateNowPlaying とか scrobble とかで使いまわす。

要認証なAPIを使う

curl "https://libre.fm/2.0/" \
  --data "method=track.updateNowPlaying&artist=Jared C. Balogh&track=Micro Composition 13&album=Micro Compositions Vol. 2&api_key=01234567890123456789012345678901&api_sig=01234567890123456789012345678901&sk={session_key}"
curl "https://libre.fm/2.0/" \
  --data "method=track.scrobble&artist[0]=Daniel Maze&track[0]=On The Farm&album[0]=Avatar&timestamp[0]=1447683613&api_key=01234567890123456789012345678901&api_sig=01234567890123456789012345678901&sk={session_key}"

API の仕様は Last.fm のを参照。
例: track.updateNowPlaying Web Service – Last.fm