選択の痕跡

音楽・テクノロジー・哲学

Spotify APIを使って、お気に入りの曲の追加したアーティストを、まとめてフォローする

久しぶりにSpotify APIを触ったので、やったことを簡単に書いておく。
きっかけはこちら。

Spotifyに「What's New」機能追加。お気に入りアーティストの新リリースをリアルタイムで通知 - Engadget 日本版

japanese.engadget.com



今更感はあるが、Spotifyがついに、フォローしているアーティストやポッドキャストの新リリースをリアルタイムで通知してくれる機能を作成してくれた。
シンプルだが、めっちゃ便利である。これまでは、基本はRelase Readerプレイリストでしか、自分のお気に入りアーティストの新譜を追えなかったのだが、選曲に良くも悪くもアルゴリズムが働いてしまっていたため、見落とすリリースも多数。
それが漸く「What's New」で解消されることになったのだ。これで、気になるアーティストの新譜を見落とす心配がなくなった。
ちなみに、細かいが、「What's New」だと、その新譜が、シングルなのかEPなのかアルバムなのかが分かるのも、個人的にはめっちゃ助かる。プレイリストだと曲単位でしか見れないので、わざわざその作品のページまでいかないと、種別が分からない。そうなると、他にも聴くべき曲があるのかどうかが分からないという状況だったのだが、それが「What's New」で解決した。無駄なチェックが不要になったし、見落としもなくなったのだ。

しかし、ここで問題が一つ。
そもそも、これまで"アーティストをフォローするなんて意識してなかった"のだ。
フォローすれば、Relase Readerプレイリストに新曲が出やすいわけではあるが、必ずしも出てくるわけではないので、わざわざフォローするなんて面倒なことをしていないアーティストが多かった。特に、ちょっと気になったぐらいのアーティストはほぼフォローしてなかったのが現状だった。

今後を考えても、アーティストをフォローするのは結構面倒だ。基本は曲を聴いていて良いなぁと思ったアーティストをフォローしたいのだが、いちいち曲からアーティストに移動して、フォローするという操作を普段の生活の中でやるのは、正直手間だ。

同じアーティストの曲を多く聴く方なら特に問題ないんだろうが、色んなアーティストの曲を広く聴く自分みたいなパターンだと、同じようなことを感じている方は、そこそこいるのではないか。





ということで、これをどうにか楽にしようと考えた。
理想は、曲をお気に入りに追加したら、そのアーティストをリアルタイムで、自動でフォローする仕組み。
これをやると、フォローするアーティストが爆発的に増えるが、見逃すよりは全然良い。邪魔なら後でフォローを外せばいいだけなので。

IFTTTとかの既存のレシピで簡単にやれないかと思ったが、これはうまくできなそうだった。
となると、自分でAPI作るしかないかなーと思ったが、ちょっと面倒なので、こちらは諦め。
単純に、Spotify APIを活用して、過去のお気に入りに入れた曲を取得し、そのアーティスト情報をもとに、アーティストをフォローするPythonプログラムを作ることにした。

こんな感じになった。
以下にコードを載せておくので、同じような課題意識がある方は、是非参考にしてみていただければ。
動けば良い精神なので、過去に書いたコードを適当に再利用しており、明らかなクソコードであるが、その点はご容赦。
仕様としては、過去のお気に入りに追加にした曲を、「from_date」の日付まで遡ってチェックし、その曲のアーティストをフォローしてなければ、フォローするというシンプルなものだ。
複数のアーティストが参加している曲だと、参加アーティスト全員をうまく取ってこれていないので、完璧ではないが、大体はこれでいけるはず。



Jupyter Notebookの実行結果はこんな感じ。
一応ログ的に、チェックした曲とアーティストの情報を出力している。 f:id:shogomusic:20210828211300p:plain

ちなみに、Spotify APIの基本的な使い方については、ググればたくさん出てくるので、そちらを参照してほしい。
一応自分も以下は書いている。
Spotify API」を初めて使って、プレイリストをコピーしてみる - 選択の痕跡

shogomusic.hatenablog.com



また、コードを書くにあたって、以下の記事が非常に参考になったので、載せさせていただく。
Python+Spotify APIでアーティストをフォローしてみる | Oh My Enter!

ohmyenter.com



久しぶりにSpotify APIを触ったが、使いたいメソッドが、インストールしていたSpotipyのバージョンでは存在しなかったため、更新しなきゃいけなかったりして、意外とてこずったのだが、やりたかったことは出来たので、満足。