Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
22
Help us understand the problem. What is going on with this article?
@EkatoPgm

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

More than 1 year has passed since last update.

音楽ストリーミングサービスもたくさん出てきていますがぼくはSpotifyを使っています。
まぁ聴きたい曲なんでも、とまではいきませんが曲のレパートリーも凄まじいし、アーティスト作成のプレイリストが楽しめることやオススメ楽曲の精度みたいのも気に入っているので。

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

で、本記事(色々やってみてシリーズっぽくしたい)は、

「別にこれといってやりたいことあるわけじゃないけどSpotifyのAPIとか聞いたら使ってみたいじゃん?」

という人向けだと思ってください。実際ぼくがそうなので。

登録

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

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

使ってみる!

んじゃ使ってみましょう。
とりあえずリファレンス(Welcome to Spotipy)にそって使っていきましょう。

インストールはこれでいけるらしいな。ふむ。
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)

22
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
EkatoPgm
文系ドシロートからIT業界に入り絶賛プログラマーとして絶賛活躍(?)中。 仕事や趣味で調べごとしたときに、ノートがわりに使おうと思います。 同じ悩みを持っている方に見ていただいたり、有識者の方かたご意見いただけたら幸いです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
22
Help us understand the problem. What is going on with this article?