楽曲の検索やメタ情報に関する Web API を提供しているサブスクリプション型音楽サービスはいくつかあります。
中でも Spotify Web API は様々な機能が提供されています。手軽に使えますし楽曲数も多いため、オススメの API です。
今回は、Spotify Web API の導入方法と、それを使って楽曲やアーティストを検索する方法を紹介します。
参考ページ
- Welcome to Spotipy! — spotipy 2.0 documentation
- GitHub - spotipy-dev/spotipy: A light weight Python library for the Spotify Web API
Python用ライブラリの導入方法
他のPythonライブラリのように、pip
を使ってインストールします。
pip install spotipy
Web API 利用のためのアクセストークン発行
Spotify Web API を利用するには https://developers.spotify.com/ のアプリアカウントと作成しアクセストークンを発行する必要があります。
まず、https://developer.spotify.com/dashboard/ にアクセスすると、以下のような画面が表示されます。
アカウントを持っていない方は、Sign up for a free Spotify account here. をクリックしてアカウントを作成してください。
CREATE AN APP をクリック後、以下の画面の2項目を入力し、チェックボックスをチェックして CREATE を押してください。
- App name: アプリの名称
- App description: アプリの説明
アプリの説明は、私は楽曲推薦アプリ(Music recommendation app)みたいな感じで書きました。
作成後,ダッシュボードに先ほど作ったアプリの名称が表示されるのでそれをクリックすると、以下のような画面がでます。
これで Client ID, Client Secret が取得できたので Spotify Web API を利用することができるようになりました。
Spotify Web API 使い方 (検索)
サンプルコード
Spotify Web API を使った楽曲検索のスクリプトです。
client_id
, client_secret
は先ほど取得した Client ID, Client Secret を与えてください。
# -*- coding: utf-8 -*- import sys import pprint import spotipy from spotipy.oauth2 import SpotifyClientCredentials # Oath2 client_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id=client_id, client_secret=client_secret, language='ja')) # 検索 search_str = sys.argv[1] results = sp.search(q=search_str, limit=20) for idx, track in enumerate(results['tracks']['items']): print(f"{idx:03d}\t{track['name']}\t")
search()の使い方
sp.search()の使い方は以下のようになっています。
results = search(q, limit=10, offset=0, type='track', market=None)
- q: 検索クエリ
- limit: 検索結果数の上限 (min = 1, default = 10, max = 50)
- type: 検索結果のタイプ
- ‘artist’, ‘album’, ‘track’, ‘playlist’, ‘show’, ‘episode’ など
- market:
- 国(市場)を選択
- ISO 3166-1 alpha-2 の国名コードで指定
- offset:
- 検索結果インデックスのオフセット
- max limit=50より多くの検索結果が必要な時に利用する
- Maximum offset (including limit): 1,000
返り値の形式 (type="tracks")
results["tracks"]["items"]
が検索結果オブジェクトの配列となっています。
従って、
for track in results["tracks"]["items"]: ....
項目 | 対応 |
---|---|
曲名 | track["name"] |
アーティスト名 | track['artists']['name'] |
アルバム名 | track['album']['name'] |
ISRC | track['external_ids']['isrc'] |
Spotify URLリンク | track["external_urls]['spotify'] |
アルバムジャケット | track['images'][0]["url"] |
時間長(ミリ秒) | track['duration_ms'] |
人気度 | track['popularity'] |
なお、これは一例であり、実際の検索結果には様々な情報が含まれていますので、
詳細はこちらからご確認ください。
より高度な検索方法の例
まとめ
Spotify Web API の導入方法と、それを使って楽曲やアーティストを検索する方法を紹介しました。
Python スクリプト化することで、大量の楽曲の情報をまとめて取得することができます。
なお、Spotify Web API 少しマニアックな機能として、楽曲の特徴を連続値で取得できます。