やりたいこと
Last.fm で曲の再生回数を記録している。
Last.fm は API を提供しており、任意の期間で再生回数ランキングを出力することができる。
これを使って、YouTube (YouTube Music) のプレイリストを作りたい。
リポジトリ
実装のポイント
Last.fm で曲単位の再生回数ランキングを取得するには getWeeklyTrackChart
Weekly とあるがパラメータで対象期間を自由に設定できるため Weekly にとらわれずに利用できる。
なお、Docs にもあるが Auth は不要なので API Key さえあれば利用可能。
Last.fm の シークレット (API Key) をどう埋め込むか
コードにべた書きするのは避けたい。
シークレットを返すサーバーを別途立てるとか、あるいはクラウドのパラメータストアサービスを使うなど考えられるが、少し大袈裟な気もする。
ここでは GitHub Actions + GoReleaser を使って ldflags からシークレットを注入することにした。
シークレットの値自体は GitHub Actions の Secrets に格納しておき、GoReleaser でバイナリ生成と GitHub の Releases にアップ。
YouTube Music 向けの動画を探す
YouTube Music 専用の API は公式からは提供されていないため、YouTube の API (Data API v3) を使う。
YouTube Music でいうところの楽曲は Art Track と呼ばれており、これを優先的に検索できるようにしたい。(音質が優れているため)
普通の動画と区別する方法がわからなかったため、以下どちらかを満たす動画は Art Track と判定するようにした。
- チャンネル名の末尾に「- Topic」がある
- 説明の冒頭に「Provided to YouTube」がある
結果
こんな具合にプレイリストを作ることができた。