Last.fm APIのgolangラッパーを作った

修論の合間に書きはじめて放置していたので一通り書き上げた。
https://github.com/shkh/lastfm-go

一昔前のLast.fmには邦楽アーティストの情報があまりなくて使えない感じだったけど、最近はかなり充実してきていて、アーティストの情報やアルバムの楽曲リストを取ってくるにはかなり良い選択肢だと思う。提供されてるAPIが幅広くて、いろんな統計情報も取ってこれる。

たとえば最近気合入ってるアーティストの一覧とか。

api := lastfm.New(APIKEY, SECRET)
result, _ := api.Chart.GetHypedArtists(nil)
for _, artist := range result.Artists {
    fmt.Println(artist.Name)
}
East India Youth
Blood Cultures
Jennifer Nettles
Painted Palms
7Horse
Luke Bond
Syn Cole
Kwabs
Kevin Drew
Raleigh Ritchie
・
・
・

全部知らん。

認証はモバイルアプリ向けとデスクトップアプリ向け、ウェブアプリ向けの3通りがあって、適当に選んで認証する。たとえばモバイルアプリ向けは

err = api.Login(username, password)

という感じ。

認証したら禊は完了、ShoutしたりScrobbleしたり色々遊べる。

err = api.User.Shout(lastfm.P{"user": "shkh_", "message": "ʕ ◔ϖ◔ʔ"})

Scrobbleするには、Track.UpdateNowPlayingとTrack.Scrobbleを使う。

start := time.Now().Unix()
p := lastfm.P{"artist": artist, "track": track}
_, err = api.Track.UpdateNowPlaying(p) //プロフィールに再生中のアイコンが表示される
if err != nil {
    return
}
time.Sleep(35 * time.Second) //ちょっと待たないといけない
p["timestamp"] = start
_, err = api.Track.Scrobble(p)
if err != nil {
    return
}
広告を非表示にする