概要
Spotify APIを使用して色々な楽曲のデータなど取得するための手順をまとめました。
API叩いてデータを取得するところまでが今回のゴールになります。
対象者
- PHP使っている方
- Dockerを使用している方
- APIからデータ取得してみたいという方
手順
準備
準備1. アカウントIDとキーを確認する
Spotify APIを使用する際にはアカウントを登録する必要があります。
(フリープランでもOK!)
登録後、開発者用ダッシュボードにアクセスしてIDとキーを取得します。
※このIDとキーが肝です。
App nameとか色々と入力する項目があるかと思いますが、一旦適当に入力しておくので大丈夫です。
準備2. PHPの準備
ここからはDockerでPHPの準備をしていきます。
DockerでPHPを使うまでの手順は省略します。
簡単にAPIからデータを取得できるよう、 spotify-web-api-php を使用していきますので、その前にComposerを準備しておいてください。
Composerが準備できましたらspotify-web-api-phpを入れていきましょう。
service名の部分はご自身の環境に合わせて直してください。
docker-compose exec (service名) composer require jwilsson/spotify-web-api-php
コマンドが通ってvendorフォルダができていれば準備OKです。
さっそくデータを取得していきましょう!
データ取得
1.アクセストークンの準備
適当にindex.phpなどのファイルを作成し、準備段階で確認した固有のIDとclient secretをセットしていきます。
<?
require_once('./vendor/autoload');
$session = new SpotifyWebAPI\Session(
'準備1で確認したID',
'準備1で確認したclient secret'
);
$api = new SpotifyWebAPI\SpotifyWebAPI();
$session->requestCredentialsToken();
$accessToken = $session->getAccessToken();
$api->setAccessToken($accessToken);
2. 各種データの取得
// アーティストを検索
$result = $api->search('weezer', 'artist');
echo json_encode($result);
こんな感じでデータが返ってきます。長いので省略していますが、アーティストの画像やジャンルなんかが取得できています。
詳細についはSpotify公式やspotify-web-api-phpのドキュメントなんかを読むと良いです。
{
- artists:
{
- href: "[https://api.spotify.com/v1/search?query=weezer&type=artist&offset=0&limit=20](https://api.spotify.com/v1/search?query=weezer&type=artist&offset=0&limit=20)",
- items:
[
- {
- external_urls:
{
- spotify: "[https://open.spotify.com/artist/3jOstUTkEu2JkjvRdBA5Gu](https://open.spotify.com/artist/3jOstUTkEu2JkjvRdBA5Gu)"
},
- followers:
{
- href: null,
- total: 3790877
},
- genres:
[
- "alternative rock",
- "modern power pop",
- "modern rock",
- "permanent wave",
- "rock"
],
- href: "[https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu](https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu)",
- id: "3jOstUTkEu2JkjvRdBA5Gu",
- images:
[
- {
- height: 640,
- url: "[https://i.scdn.co/image/ab6761610000e5eb3cd35451daa1b690cfbbb2d4](https://i.scdn.co/image/ab6761610000e5eb3cd35451daa1b690cfbbb2d4)",
- width: 640
},
- {
- height: 320,
- url: "[https://i.scdn.co/image/ab676161000051743cd35451daa1b690cfbbb2d4](https://i.scdn.co/image/ab676161000051743cd35451daa1b690cfbbb2d4)",
- width: 320
},
- {
- height: 160,
- url: "[https://i.scdn.co/image/ab6761610000f1783cd35451daa1b690cfbbb2d4](https://i.scdn.co/image/ab6761610000f1783cd35451daa1b690cfbbb2d4)",
- width: 160
}
],
- name: "Weezer",
(このあとにも色々データが続きます。今回は省略。)
続けてアルバム情報を取得してみましょう。先程取得したアーティスト情報の中からアーティストIDを使用して、そのアーティストに紐づくアルバム情報を取得してみようと思います。
// アルバム
$result = $api->getArtistAlbums('3jOstUTkEu2JkjvRdBA5Gu', ['include_groups' => 'album', 'limit' => 5]);
echo json_encode($result);
index.phpを見てみましょう。
{
- href: "[https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu/albums?offset=0&limit=5&include_groups=album](https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu/albums?offset=0&limit=5&include_groups=album)",
- limit: 5,
- next: "[https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu/albums?offset=5&limit=5&include_groups=album](https://api.spotify.com/v1/artists/3jOstUTkEu2JkjvRdBA5Gu/albums?offset=5&limit=5&include_groups=album)",
- offset: 0,
- previous: null,
- total: 406,
- items:
[
- {
- album_type: "album",
- total_tracks: 28,
- available_markets:
[],
- external_urls:
{
- spotify: "[https://open.spotify.com/album/2WJsNhU7H0rZQzWdMVQ4NV](https://open.spotify.com/album/2WJsNhU7H0rZQzWdMVQ4NV)"
},
- href: "[https://api.spotify.com/v1/albums/2WJsNhU7H0rZQzWdMVQ4NV](https://api.spotify.com/v1/albums/2WJsNhU7H0rZQzWdMVQ4NV)",
- id: "2WJsNhU7H0rZQzWdMVQ4NV",
- images:
[],
- name: "SZNZ: Winter",
- release_date: "2022-12-21",
- release_date_precision: "day",
- type: "album",
- uri: "spotify:album:2WJsNhU7H0rZQzWdMVQ4NV",
- artists:
[],
- album_group: "album"
},
(省略)
取得できましたね!(取得データは長いので今回も省略します。)
今回はこれで以上です。
色々とデータが取得できて面白いですね。
公式ドキュメントを読んでみるとどんなデータが取得できているのかわかりますし、ライブラリのドキュメントからもどんなデータが取得できるのか確認できます。
音楽データの分析?なんかもされている方もいるみたいです。
一度目を通して見られてはいかがでしょうか。