Spotify APIで遊んでみる

## 認証設定
Spotify apiを利用するには、アカウント作ってclient_id, client_secretを発行してもらう必要がある。
[Spotify Developer](https://developer.spotify.com/my-applications/)

## 特定アーティスト情報を取得
docのクイックスタートを早速試してみる。
2017/5/29から全てのリクエストに対してアクセストークンが必要になった模様[※](https://developer.spotify.com/news-stories/2017/01/27/removing-unauthenticated-calls-to-the-web-api/)
でもでも今のところリクエストの上限はなさそうです。
client Module一覧は[こちら](https://spotipy.readthedocs.io/en/latest/#module-spotipy.client)

```python:quick_start.py
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

client_id = 'xxxxxxxxxxxxxx'
client_secret = 'xxxxxxxxxxxxxx'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)

spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

name = 'rihanna'
result = spotify.search(q='artist:' + name, type='artist')
print(result)
```
成功したらウジャっと色々jsonで返ってくる
超有名アーティストであっても同名の無名アーティストや類似名のアーティストは多々いるところ。
先ほどの結果をもとに下記"Rihanna"で検索してみると

```python
for i in result['artists']['items']:
    print("{0} popularity: {1}".format(i['name'], i['popularity']))
```
```:実行結果
Rihanna : 96
Rihanna Johnson : 8
Rihanna Paige : 0
Rihanna Nicole : 0
Rebecca Rihanna : 4
Fran London feat. Rihanna : 2
League of One feat Rihanna Paige : 0
Norty Cotto, League of One feat Rihanna Paige : 0
Made famous by Rihanna : 13
Rihanna Cover Band : 6
```
同じRihanna[^1]でも沢山出てくる。

右の数値はpopularityで0~100の値が入る
100に近ければ知らない人はいないぐらいのアーティストになる
*Rihanna*は現時点(2017年11月)で世界ランク22位
1位, 2位, 3位はそれぞれ以下の結果となっている
*Ed Sheeran*
*Maroon 5*
*Post Malone*

## 類似アーティストの取得
各アーティストには、spotifyで振られている固有idがある
先ほどの取得したjsonの一番最初に出てきたアーティストのidを欲しいなら

```bash
result['artists']['items'][0]['id'] # 5pKCCKE2ajJHZ9KAiaK11H
```
このidを使って類似アーティストの取得も可能。

```python
# popularityが96のRihannaの類似アーティストを取得する
# id: 5pKCCKE2ajJHZ9KAiaK11H
result = spotify.artist_related_artists(artist_id)
for artist in result['artists']:
    artist_name = artist['name']
    popularity = artist['popularity']
    unique_id = artist['id']
    print("{0} - popularity: {1}, id: {2}".format(artist_name, popularity, unique_id))
```

```:実行結果
The Pussycat Dolls - popularity: 72, id: 6wPhSqRtPu1UhRCDX5yaDJ
Ciara - popularity: 73, id: 2NdeV5rLm47xAvogXrYhJX
Fergie - popularity: 74, id: 3r17AfJCCUqC9Lf0OAc73G
Destiny's Child - popularity: 76, id: 1Y8cdNmUJH7yBTd9yOvr5i
Gwen Stefani - popularity: 77, id: 4yiQZ8tQPux8cPriYMWUFP
Britney Spears - popularity: 81, id: 26dSoYclwsYLMAKD3tpOr4
Beyoncé - popularity: 91, id: 6vWDO969PvNqNYHIOW5v0m
Christina Aguilera - popularity: 81, id: 1l7ZsJRRS8wlW3WfJfPfNS
Jessie J - popularity: 76, id: 2gsggkzM5R49q6jpPvazou
Nicki Minaj - popularity: 93, id: 0hCNtLu0JehylgoiP8L4Gh
Iggy Azalea - popularity: 75, id: 5yG7ZAZafVaAlMTeBybKAL
Ne-Yo - popularity: 81, id: 21E3waRsmPlU7jZsS13rcj
Usher - popularity: 83, id: 23zg3TcAtWQy7J6upgbUnj
Tinashe - popularity: 76, id: 0NIIxcxNHmOoyBx03SfTCD
JoJo - popularity: 71, id: 5xuNBZoM7z1Vv8IQ6uM0p6
Jeremih - popularity: 83, id: 3KV3p5EY4AvKxOlhGHORLg
Jordin Sparks - popularity: 69, id: 2AQjGvtT0pFYfxR3neFcvz
Alicia Keys - popularity: 81, id: 3DiDSECUqqY1AuBP8qtaIa
Lady Gaga - popularity: 84, id: 1HY2Jd0NmPuamShAr6KMms
Ashanti - popularity: 73, id: 5rkVyNGXEgeUqKkB5ccK83
```

これで色々遊べそう

apiについての詳細は[こちら](https://developer.spotify.com/web-api/endpoint-reference/)に詳しく載っている


[^1]: Rihannaにした理由は特にない