0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHP】Spotify API使うまでの流れ

Posted at

概要

Spotify APIを使用して色々な楽曲のデータなど取得するための手順をまとめました。

API叩いてデータを取得するところまでが今回のゴールになります。

対象者

  • PHP使っている方
  • Dockerを使用している方
  • APIからデータ取得してみたいという方

手順

準備

準備1. アカウントIDとキーを確認する:pick:

Spotify APIを使用する際にはアカウントを登録する必要があります。
(フリープランでもOK!)
登録後、開発者用ダッシュボードにアクセスしてIDとキーを取得します。
※このIDとキーが肝です。
スクリーンショット 2024-09-23 135758.png
App nameとか色々と入力する項目があるかと思いますが、一旦適当に入力しておくので大丈夫です。

準備2. PHPの準備 :desktop:

ここからは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"
        },
(省略)

取得できましたね!(取得データは長いので今回も省略します。)

今回はこれで以上です。


色々とデータが取得できて面白いですね。
公式ドキュメントを読んでみるとどんなデータが取得できているのかわかりますし、ライブラリのドキュメントからもどんなデータが取得できるのか確認できます。
音楽データの分析?なんかもされている方もいるみたいです。
一度目を通して見られてはいかがでしょうか。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?