46
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonでSpotify API [とにかく使ってみる編]

Last updated at Posted at 2019-05-02

音楽ストリーミングサービスもたくさん出てきていますがぼくは[Spotify] (https://itunes.apple.com/jp/app/spotify-%E9%9F%B3%E6%A5%BD%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9/id324684580?mt=8)を使っています。
まぁ聴きたい曲なんでも、とまではいきませんが曲のレパートリーも凄まじいし、アーティスト作成のプレイリストが楽しめることやオススメ楽曲の精度みたいのも気に入っているので。

して、そのSpotifyがAPIを出していると聞いて興味が湧きました。
楽曲ごとの解析データも観れるとか、再生方法をいじれるとか、プレイリストをいじる機能もあるとか、これは(とくにどうしようとかいうビジョンがあるわけではないが)使ってみるしかない!

で、本記事(色々やってみてシリーズっぽくしたい)は、
###「別にこれといってやりたいことあるわけじゃないけどSpotifyのAPIとか聞いたら使ってみたいじゃん?」
という人向けだと思ってください。実際ぼくがそうなので。

登録

Spotify APIを使うにはアプリケーション登録が必要なので、やっておきましょう。
アカウントを持ってない方はここから登録してください。

アプリケーション登録をするにはここにログインして、大体案内どおりでわかると思うので適当にまぁやってください。
APIとか全然わからんぼくでもまぁなんとかできたので皆さんはもっと大丈夫だと思います。
Client IDClient Secretは必要なので控えておいてくださいね。後からでも見れますが。

使ってみる!

んじゃ使ってみましょう。
とりあえずリファレンス([Welcome to Spotipy] (https://spotipy.readthedocs.io/en/latest/))にそって使っていきましょう。

インストールはこれでいけるらしいな。ふむ。
Python開発環境を作成済みの方は以下のコマンドでAPIを使えるようにします。
pip install spotipy
環境によってはyumとか使って、まぁspotipyってのを適当にインストールしてください。

どうでもいいけど、Python系のライブラリとかはみんな「py」って付けますね。
すぽちぱいってかわいいですね。発音するのはちょっと恥ずかしい。

リファレンスにあった以下のコードを書いてみます。

import spotipy

lz_uri = 'spotify:artist:36QJpDe2go2KgaRleHCDTp'

spotify = spotipy.Spotify()
results = spotify.artist_top_tracks(lz_uri)

for track in results['tracks'][:10]:
    print 'track    : ' + track['name']
    print 'audio    : ' + track['preview_url']
    print 'cover art: ' + track['album']['images'][0]['url']
    print

実行ドン

spotipy.client.SpotifyException: http status: 401, code:-1 - https://api.spotify.com/v1/artists/36QJpDe2go2KgaRleHCDTp/top-tracks?country=US:
 No token provided

###エラーじゃねぇか。
調べてみるとどうも、いつだかから全てのAPI呼び出しにトークンが必要な様子。
spotipyのAPIには「Non-Authorized requests」って書いてあるんだけど、古いのかな。

アプリケーション登録で使ったClient IDClient Secretを使って以下のように書き換えます。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import sys

lz_uri = 'spotify:artist:36QJpDe2go2KgaRleHCDTp'

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)

results = spotify.artist_top_tracks(lz_uri)

for track in results['tracks'][:10]:
    print('track    : ' + track['name'])
    print('audio    : ' + track['preview_url'])
    print('cover art: ' + track['album']['images'][0]['url'])
    print()

今度こそドン

track    : Stairway to Heaven - Remaster
audio    : https://p.scdn.co/mp3-preview/8226164717312bc411f8635580562d67e191a754?cid=575190b52c754debad7825f97cf4cfec
cover art: https://i.scdn.co/image/557a6058e3de72bf37ffcd2c12dd5932276df344

track    : Immigrant Song - Remaster
...

###とれたっぽいぞ

表示は長いので割愛してます。

ともかく、APIを使ってデータを取得することができました!
いろいろ取得してみて、また記事書いてみたいと思います!!

[追記]
いろいろやってみた記事は以下に追記していきます。
興味が出てきたなって方は、拙い記事ですがぜひご一緒にどうぞ!
PythonでSpotify API [アルバム情報編](2019.05.02)
PythonでSpotify API [情報の文字列検索](2019.05.04)
PythonでSpotify API [audio_features編](2019.06.01)

46
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?