Spotifyからジャケット画像をダウンロードしよう
このnoteは『ニコニコメドレーシリーズ Advent Calendar 2022』(https://adventar.org/calendars/7820)の12月11日投稿分です。
はじめに
はじめましての方ははじめまして。noraといいます。野良犬ではなく野良猫です。
ニコメドの動画制作でこの曲の画像が欲しいけどググってもガビガビな画像かサイズの小さい画像しか見つからない…と困ったことがある人も多いと思います。
そこでこのnoteではSpotifyにある楽曲やアルバムのジャケット画像をダウンロードする方法について解説を行いたいと思います。
2022/9/17に投稿した『オモムキとアジ』に使われている画像の半分以上はこれを利用しています。
デスクトップアプリやブラウザからでは難しいので『Spotify API』というものを用いて画像を収集します。(ブラウザからでもデベロッパーツールを使えばダウンロードできますが画像サイズが小さい気がします。実は普通に大きいサイズでも取れるよってことがあったら教えてください。)
準備はそこそこ必要ですが便利だと思うので紹介します。
※注意※
画像収集のためにPythonを使いますが自分はプログラミングに全く詳しくないのでもっと素敵な良い方法があるかもしれません。
画像収集をしよう
必要なもの
Spotifyアカウント
Pythonを扱える環境
SpotifyアカウントはSpotify APIを利用するために必要になります。
SpotipyというSpotify API用のPythonライブラリを使うため、Pythonを扱える環境が必要になります。Pythonの導入についてはここでは割愛します。詳しい人に聞いた方が良いです。
Spotify APIの登録方法
※ページ下部の記事の方が詳しく書いてあるのでそちらも確認してみてください。
Spotifyアカウントは持っている前提で話します。
下のリンクから開発者用のサイトに移動します。
『LOG IN』を押してログインします。
利用規約的なものを確認して同意すると、『Dashboard』という画面になると思います。
『CREATE AN APP』を押すと以下の画面が出てくるので、『App name(アプリ名)』と『App description(アプリの説明)』を(適当に)入力し、規約のチェックマークをつけて『CREATE』を押すことでアプリの作成ができます。
作成するとアプリの詳細画面が見れるようになります。
App Statusの下にある『Client ID』と、さらに下のSHOW CLIENT SECRETを押して表示される『Client Secret』はめちゃくちゃ大事です。
※Client Secretは特に外部に漏らしたらマズいみたいです。大切にしましょう。
これでSpotify APIの方の設定は終わりました。
次から早速Pythonを使って画像収集をしてみましょう。
Pythonを使おう
Pythonのコードを書いていきます。自分はJupyter Notebookというものを使っています。
はじめに、Spotipy(Pythonライブラリ)をインストールします。
下のコードを入力して実行してください。
pip install spotipy
少し時間がかかると思いますがインストールが終わるまで待ちます。
インストールが終わったら早速コードを書いてみましょう。
今回は上の方にスクショを貼った『SPACE AKIBA-POP』(アルバム)の画像をダウンロードしてみましょう。
コードに必要なものは、先ほどアプリを作ったときに取得したClient IDとClient Secret、欲しい画像があるページのURLの最後の部分です。
今回の例だと、https://open.spotify.com/album/2cvrzIDlof90pszrFQ5knfの'2cvrzIDlof90pszrFQ5knf'の部分になります。
コード中のClient ID、Client Secret、URLはすべてシングルクォーテーションかダブルクォーテーションで囲うようにしましょう。
下にあるコードをそのままコピペしてIDやURLなどを各自のものに変えて実行してみてください。
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
client_id = '自分のClient ID'
client_secret = '自分のClient Secret'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
album_id = '対象のURLの最後の部分'
spotify.album(album_id)
Client IDとClient Secretを入力し、URLの部分を'2cvrzIDlof90pszrFQ5knf'にして実行すると、
{'album_type': 'album',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/4UNEM59pyyoeOZiQKj3fXo'},
'href': 'https://api.spotify.com/v1/artists/4UNEM59pyyoeOZiQKj3fXo',
'id': '4UNEM59pyyoeOZiQKj3fXo',
'name': 'Mosaic.Wav',
'type': 'artist',
'uri': 'spotify:artist:4UNEM59pyyoeOZiQKj3fXo'}],
'available_markets': ['AD',
...省略(かなり長い)...
'id': '2cvrzIDlof90pszrFQ5knf',
'images': [{'height': 640,
'url': 'https://i.scdn.co/image/ab67616d0000b273efcace231caab71d019a11e2',
'width': 640},
{'height': 300,
'url': 'https://i.scdn.co/image/ab67616d00001e02efcace231caab71d019a11e2',
'width': 300},
{'height': 64,
'url': 'https://i.scdn.co/image/ab67616d00004851efcace231caab71d019a11e2',
'width': 64}],
'label': 'Sham.Studio.',
'name': 'SPACE AKIBA-POP',
...省略(超長い)...
このような結果が表示されます。めちゃくちゃ長いです。(アルバム全曲分のデータが表示されるので)
ここで注目してほしいところが、'images'の部分です。もうお分かりかと思いますが、ここに640*640、300*300、64*64のサイズの画像のリンクが表示されています。
リンクをコピーして飛び、画像を『名前を付けて保存』すれば無事ダウンロード成功です!
コード中(8,9行目)の"album_id"というのは変数的なものなので好きなものに変えてもらって大丈夫です。
大事なのは9行目の"spotify.album"の部分で、今回はアルバムの画像を取得するためにこれを用いましたが、
アーティストの画像 → spotify.artist(変数)
プレイリストの画像 → spotify.playlist(変数)
に変える必要があります。
spotify.playlistで実行すると、そのプレイリストに使われている画像のリンクとプレイリスト内の楽曲すべての画像のリンクが表示されるので、あらかじめほしい画像をまとめたプレイリストを作っておくと便利かもしれません。
さいごに
以上がSpotifyのジャケット画像をダウンロードする方法でした。
なかなか導入は面倒ですが、そこそこの大きさで比較的きれいな画像を入手したいというときにはかなり使えるものだと思うので是非お試しください。
また、Pythonのコードはもっとスマートな書き方があるかもしれないのでコード書ける人は弄ってみてください。
参考URL(導入はこっちの方が丁寧です)
【初心者向け】Spotify APIを利用するための方法
https://self-development.info/【初心者向け】spotify-apiを利用するための方法/
Spotify APIを簡単に利用できるSpotipyのインストール
https://self-development.info/spotify-apiを簡単に利用できるspotipyのインストール/