気分にあったプレイリストの検索
SpotifyのAPIを活用して、気分に合った曲を検索できるプログラムを作成した。このプログラムでは、気分だけでなく、ポップスやジャズなどのジャンルを選択することも可能。
英語と日本語のどちらでも検索できるが、言語を統一した方が検索しやすい。
利用の際には、PCでSpotifyの開発者向けページにアクセスし、アカウントにログインしてアプリ名などを登録する必要がある。
詳しくはここを参照。
ソースコード
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
# 認証情報
client_id ="Client ID" # Client IDを入力
client_secret = "Client secret" # Client secretを入力
ccm = SpotifyClientCredentials(client_id = client_id, client_secret = client_secret)
spotify = spotipy.Spotify(client_credentials_manager = ccm)
# 気分とジャンルを定義
mood = input("気分を教えてください : ")
genre = int(input("ジャンルを選択しますか? はい → 1 いいえ → 2: "))
if genre == "1":
genre_select = input("指定するジャンルを教えてください : ")
else:
genre_select = None
if genre_select is None:
query = f'{mood}' # 気分のみで検索
else:
query = f'{mood} {genre_select}' # 気分とジャンルで検索
# 検索
how_limit=int(input("いくつプレイリストを探しますか?: "))
results = spotify.search(q=query, type="playlist", limit=how_limit)
# 検索結果からプレイリスト名とその詳細を表示
for idx, playlist in enumerate(results['playlists']['items']):
playlist_name = playlist['name']
playlist_description = playlist['description']
playlist_url = playlist['external_urls']['spotify']
print(f"{idx + 1}. {playlist_name}")
print(f" 説明: {playlist_description}")
print(f" URL: {playlist_url}\n")
反省点
Spotifyの検索画面にある「ジャンル&気分」というフィルターを利用できないかと考えていたが、APIにその機能はなかったため、
プレイリストのタイトルや説明文に「happy」やジャンルの「pop」などの記述があるものしか表示されないプログラムになってしまった。
そのため気分やジャンルを英語で入力すると英語圏の人が作成したプレイリストが表示され、日本語で入力すると日本人が作成したプレイリストが表示されるようになってしまった。
言語関係なく気分やジャンルを検索できるようにすれば表示できるプレイリストの幅も広がると思う。
参考
API利用ねはぴれ Spotify API
ChatGPT「SpotifyのAPIを利用して、気分とジャンルにを指定してプレイリストを検索するPythonコードを書いて」という質問をもとに自分なりに変更を加えた