スキップしてメイン コンテンツに移動

Spotifyプレイリストのデータをspotipyで取得する

私は音楽が好きなのですが、自分の好みを客観的に知りたいです。

客観的に知るためには、やはりデータ分析ですね。


どうやって音楽のデータを手に入れるのか。

SpotifyがAPIでデータを提供してくれています。

それを使って、自分の好みの音楽を分析したいと思います。


SpotifyAPIからプレイリスト情報を取得する

まずはプレイリストの情報を取得することから始めます。

spotipyというライブラリがあるので、それを使います。

こちらのページを参考にさせていただいてます。


私は毎週プレイリストを作っているので、そのプレイリストのデータを取得したいと思います。

↓code

# from google.colab import files
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import time
client_id = 'SPOTIPY_CLIENT_ID'
client_secret = 'SPOTIPY_CLIENT_SECRET'
client_credentials_manager = SpotifyClientCredentials(client_id, client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
def getTrackIDs(user, playlist_id):
ids = []
playlist = sp.user_playlist(user, playlist_id)
for item in playlist['tracks']['items']:
track = item['track']
ids.append(track['id'])
return ids
ids = getTrackIDs('USER_ID', 'PLAYLIST_ID')
def getTrackFeatures(id):
meta = sp.track(id)
features = sp.audio_features(id)
# meta
name = meta['name']
album = meta['album']['name']
artist = meta['album']['artists'][0]['name']
release_date = meta['album']['release_date']
length = meta['duration_ms']
popularity = meta['popularity']
# features
acousticness = features[0]['acousticness']
danceability = features[0]['danceability']
energy = features[0]['energy']
instrumentalness = features[0]['instrumentalness']
mode = features[0]['mode']
liveness = features[0]['liveness']
loudness = features[0]['loudness']
speechiness = features[0]['speechiness']
tempo = features[0]['tempo']
time_signature = features[0]['time_signature']
valence = features[0]['valence']
track = [name, album, artist, release_date, length, mode, popularity, danceability, acousticness,
energy, instrumentalness, liveness, loudness, speechiness, tempo, time_signature, valence]
return track
tracks = []
for i in range(len(ids)):
time.sleep(.5)
track = getTrackFeatures(ids[i])
tracks.append(track)
df = pd.DataFrame(tracks, columns=['name', 'album', 'artist', 'release_date', 'length', 'mode', 'popularity', 'danceability',
'acousticness', 'energy', 'instrumentalness', 'liveness', 'loudness', 'speechiness', 'tempo', 'time_signature', 'valence'])
df.head()
df.to_csv("01weeks2022.csv", sep=',')
files.download('01weeks2022.csv')
view raw 01weeks2022.py hosted with ❤ by GitHub

これを実行するとcsvでダウンロードできます。

このcsvには、プレイリスト中のアーティスト・曲名・リリース日・曲の長さなどが入っています。


このコードはちょっとおかしい部分やエラーが出ていますが、一応ほしい情報は手に入りまいした。

今後Pythonを勉強しながらエラーをなくしていきたいと思います。

このブログの人気の投稿

TouchDesigerでmp4を書き出す(映像+音)

TouchDesignerの醍醐味は音と図形を連動できることだと思ってます。 私がTouchDesignerに惹かれたのは、この部分です。 ということで、音と図形の連動をやってみました。 こんな動画をつくりました。 ▼ 動画作成手順 まず、TouchDesignerで動画を作成します。 以下の手順で作成します。 ▼ ムービー ・[Circle TOP]で円をつくる ・[Transform CHOP]をつなげる ▼ サウンド ・[Audio File In]で音を取り込む(デフォルトの音を選んでます) ・[Audio Filter CHOP]の[Filter]で[Band Pass]を選択 ・[Math CHOP]の[Combine Channels]の[Maxinum]を選択 ・[Math CHOP]の[Range]の[To Range]を 0 ~ 100 にする ・[Null CHOP]をつなげる ▼ サウンドをスケールに反映する ・サウンドの[Null CHOP]をムービーの[Transform TOP]の Scale へつなげる ▼ 大きさを調整する ・背景用に[Constant CHOP]をつくる ・[Over TOP]をつくる ・[Over TOP]に[Transform TOP]と[Constant CHOP]をつなげる ・[Over TOP]の[Fixed Layer]を[Constant CHOP]に合わせる(この場合は Input2) 完成です。 ▼ mp4書き出し手順 これを書き出します。 ・[File]メニューから[Export Movie]を選択 ・サウンドの[Null CHOP]を[CHOP Audio]へドラッグ・アンド・ドロップ ・ムービーの[Null TOP]を[TOP Video]へドラッグ・アンド・ドロップ ・[Codec]の[MPEG4]を選択 ・[Filename]で保存先を選択 ・Render Movieの[Start]をクリック こんな感じです↓ これでMpeg4のファイルができていると思います。

BlenderデータをTouchDesignerに取り込みたい

Blenderで作ったものをTouchDesignerで扱いたいと思いました。 しかし、いろいろ調べたのですが、方法が見つからなくて苦労しました。 基本的すぎて誰も記事や動画にしないのかもしれません。。 参考にした動画 TDSW Youtube Academyを参考にしました。 無事に完了して、以下の画像のようになりました。 手順 Blenderで作ったものをTouchDesignerで扱うための方法は以下の手順です。 1.Blenderで作ったものを「obj」形式でエクスポート 2.objファイルをTouchDesignerにドラッグ・アンド・ドロップする 3.配置したSOPの右側を右クリックしてGeometoryCOMPを置く 4.CameraCOMPを置く 5.LightCOMPを置く 6.renderTOPを置く。自動的にGeometoryCOMP、CamaraCOMP、LightCOMPとつながる。 これでBlenderで作ったものをTouchDesignerで扱えるようになります。 ちなみに 3Dを扱うときの画面分割方法は、 ・左にいつもの作業画面 ・右上にGeometory Viewer ・右下にTop Viewer を置くといいようです。 右下は、Top Viewerを選択した後、OutTOPのDisplayをオンにすると表示されます。

TouchDesignerで画像と文字を書き出したい

TouchDesignerを勉強しています。 基本的なことはざっくりとやってみました。 今回は画像と文字を書き出したいと思います。 動画を書き出す TouchDesignerは動画がメインだと思うのですが、単純に画像を書き出すことってどうするんだろう?と思ったので、やってみました。 [Movie File in]で画像を読み込む [Level]で少し調整 画像と背景の[Constant]を[Over]で合わせる [Text]で文字を入れる [Over]でテキストと画像を合わせる [Null]で右クリックしてsave imageする Nullで画像を保存するとtiff形式になりました。 他にも書き出し方がありそうですがわからなかったので、今回はGIMPでpngにしました。 TouchDesignerって便利ですね。 動画も画像も音声もなんでもかんでもTouchDesignerでまとめることができそうです。