Help us understand the problem. What is going on with this article?

Spotify APIの仕様についてまとめ

はじめに

Spotify APIはドキュメントで明文化されていない仕様があったり、アプリで存在する機能がAPIでは提供されてないといったことがよくあります。
そこで、Spotify APIの仕様についてメモしてみました。

Web API Reference(公式APIリファレンス)に記載されているエンドポイントごとに下記にまとめていきます。

2019年12月現在の情報のため、更新があれば修正します。
(誤りなどありましたら編集リクエスト、コメントなどいただけるとありがたいです。)

Follow

プレイリストのアンフォロー

https://developer.spotify.com/documentation/web-api/reference/follow/unfollow-playlist/

プレイリスト自体のデータは削除できない

上記エンドポイントは自分で作成したプレイリストのアンフォローもできますが、プレイリストのデータそのものを削除することはできません。
例えば、自分で作成したプレイリストのフォロワーが自分のアカウントのみの場合(Spotifyの仕様上プレイリスト作成時点で自動的に作成したプレイリストのフォロワーになります)にアンフォローのエンドポイントからリクエストをすると、自分のアカウントも含めアクセスができなくなります。(ただし、プレイリストのURLから直接アクセスすることはできます。)

Player

https://developer.spotify.com/documentation/web-api/reference/player/

ユーザーの再生の開始、停止

https://developer.spotify.com/documentation/web-api/reference/player/start-a-users-playback/

Spotifyアプリを起動(再生)している状態でないと機能しない

仕様というよりバグ
デスクトップアプリの場合、アプリを起動した状態であればAPIは機能する。
スマホアプリの場合、アプリを起動し、かつ何らかの楽曲を再生している状態でないと500エラーとなる。

Playlists

https://developer.spotify.com/documentation/web-api/reference/playlists/

プレイリスト情報の更新(プレイリスト名、公開状態、説明文)

https://developer.spotify.com/documentation/web-api/reference/playlists/change-playlist-details/

説明文(description)を削除できない

プレイリストに説明文をつけることができるのですが、削除はできません。
リクエスト時にdescriptionを空で送るとAttribute description is emptyとエラーが出てしまいます。

Request_body.json
{
  "description": ""
}
対処法

全角スペースを入れることで一応文字が入らない状態を再現することができます。
半角スペースだとできません。

Request_body.json
{
  "description": " "
}

プレイリスト画像の取得

https://developer.spotify.com/documentation/web-api/reference/playlists/get-playlist-cover/

プレイリスト画像の種類

プレイリスト画像には以下の種類があり、それぞれでドメインが異なります。
- 自動生成の画像(ジャケット画像1枚) https://i.scdn.co
- 自動生成の画像(ジャケット画像が4枚組になった画像) https://mosaic.scdn.co
- ユーザーが登録したプレイリスト画像 https://pl.scdn.co
- チャート系(バイラル、トップチャート) https://charts-images.scdn.co
- This is系 https://thisis-images.scdn.co
*一部例外あり

プレイリスト画像のアップロード

https://developer.spotify.com/documentation/web-api/reference/playlists/upload-custom-playlist-cover/

画像削除のAPIが存在しない

現状上記エンドポイントは以下の二点しかできません。
1. プレイリスト画像が登録されていない(デフォルト)状態からプレイリスト画像を設定する
2. プレイリスト画像が登録されている状態から別の画像に変更する
従って、プレイリスト画像をデフォルトの状態に戻す(削除)を行う操作は用意されていません。

Search

https://developer.spotify.com/documentation/web-api/reference/search/search/

日本語で結果が返ってこない

例えば水曜日のカンパネラのような日本語で書かれているアーティストを検索した際、Wednesday Campanellaと変換されて結果が返ってきてしまいます。

対処法

その場合、Accept-Languageヘッダーをリクエスト時に付与することで日本語で結果が返ってきます。(公式ドキュメントに書いてほしい)
詳しくはこちらで書いてます。

ポッドキャストを検索する

ポッドキャストを検索する場合、typeshowまたはepisodeを指定します。(両方指定することもできます)

https://api.spotify.com/v1/search?q=dan%20carlin&type=episode

https://api.spotify.com/v1/search?q=dan%20carlin&type=show

https://api.spotify.com/v1/search?q=dan%20carlin&type=episode,show

Tracks

トラック情報の取得

https://developer.spotify.com/documentation/web-api/reference/tracks/get-track/

一部のトラックはプレビュー用のmp3が取得できない

試聴用に30秒のトラックのmp3が用意されていますが、権利関係などで一部のトラックは試聴用のmp3が取得できません。
取得できない場合、トラックオブジェクトのpreview_urlnullで返されます。

yumayamada1029
多分日本で一番Spotify APIを触ってる人。 音楽共有プラットフォームDIGLEとか開発してます。 https://digle.tokyo https://mag.digle.tokyo
https://digle.tokyo
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした