A PHP wrapper for Spotify's Web API.
PHP
Latest commit 24776ea Dec 11, 2016 @jwilsson Correct changelog header

README.md

Spotify Web API PHP

Latest Stable Version Build Status Coverage Status

This is a PHP wrapper for Spotify's Web API. It includes the following:

  • Helper methods for all API methods:
    • Information about artists, albums, tracks, and users.
    • Spotify catalog search.
    • Playlist and user music library management.
    • Music featured by Spotify.
  • Authorization flow helpers.
  • PSR-4 autoloading support.

Requirements

Installation

Add spotify-web-api-php as a dependency to your composer.json:

"require": {
    "jwilsson/spotify-web-api-php": "^1.0.0"
}

For more instructions, please refer to the documentation.

Examples

Add albums to the current user's library

$api->addMyAlbums([
    '1oR3KrPIp4CbagPa3PhtPp',
    '6lPb7Eoon6QPbscWbMsk6a',
]);

Add tracks to the current user's library

$api->addMyTracks([
    '1id6H6vcwSB9GGv9NXh5cl',
    '3mqRLlD9j92BBv1ueFhJ1l',
]);

Add tracks to a user's playlist

$api->addUserPlaylistTracks('username', 'playlist_id', [
    '1id6H6vcwSB9GGv9NXh5cl',
    '3mqRLlD9j92BBv1ueFhJ1l',
]);

Create a new playlist for a user

$api->createUserPlaylist('username', [
    'name' => 'My shiny playlist',
]);

Check if the current user follows a user or artist

$follows = $api->currentUserFollows('user', [
    'spotify',
    'spotify_france',
]);

var_dump($follows);

Delete albums from the current user's library

$api->deleteMyAlbums([
    '1oR3KrPIp4CbagPa3PhtPp',
    '6lPb7Eoon6QPbscWbMsk6a'
]);

Delete tracks from the current user's library

$api->deleteMyTracks([
    '1id6H6vcwSB9GGv9NXh5cl',
    '3mqRLlD9j92BBv1ueFhJ1l',
]);

Delete tracks from a user's playlist

$tracks = [
    ['id' => '1id6H6vcwSB9GGv9NXh5cl'],
    ['id' => '3mqRLlD9j92BBv1ueFhJ1l'],
];

$api->deleteUserPlaylistTracks('username', 'playlist_id', $tracks, 'snapshot_id');

Follow an artist or user

$api->followArtistsOrUsers('artist', [
    '74ASZWbe4lXaubB36ztrGX',
    '2t9yJDJIEtvPmr2iRIdqBf',
]);

Follow a playlist

$api->followPlaylist('username', 'playlist_id');

Get an album

$album = $api->getAlbum('7u6zL7kqpgLPISZYXNTgYk');

print_r($album);

Get multiple albums

$albums = $api->getAlbums([
    '1oR3KrPIp4CbagPa3PhtPp',
    '6lPb7Eoon6QPbscWbMsk6a',
]);

print_r($albums);

Get all tracks from an album

$tracks = $api->getAlbumTracks('1oR3KrPIp4CbagPa3PhtPp');

print_r($tracks);

Get an artist

$artist = $api->getArtist('36QJpDe2go2KgaRleHCDTp');

print_r($artist);

Get an artist's related artists

$artists = $api->getArtistRelatedArtists('36QJpDe2go2KgaRleHCDTp');

print_r($artists);

Get multiple artists

$artists = $api->getArtists([
    '6v8FB84lnmJs434UJf2Mrm',
    '6olE6TJLqED3rqDCT0FyPh',
]);

print_r($artists);

Get all albums by an artist

$albums = $api->getArtistAlbums('6v8FB84lnmJs434UJf2Mrm');

print_r($albums);

Get an artist's top tracks in a country

$tracks = $api->getArtistTopTracks('6v8FB84lnmJs434UJf2Mrm', [
    'country' => 'se',
]);

print_r($tracks);

Get track audio features

$features = $api->getAudioFeatures([
    '0eGsygTp906u18L0Oimnem',
    '1lDWb6b6ieDQ2xT7ewTC3G',
]);

print_r($features);

Get Spotify list of categories

$categories = $api->getCategoriesList([
    'country' => 'se',
]);

print_r($categories);

Get Spotify category

$category = $api->getCategory('dinner', [
    'country' => 'se',
]);

print_r($category);

Get playlists of a Spotify category

$playlists = $api->getCategoryPlaylists('dinner', [
    'country' => 'se',
]);

print_r($playlists);

Get Spotify featured playlists

$playlists = $api->getFeaturedPlaylists();

print_r($playlists);

Get a list of possible seed genres

$genres = $api->getGenreSeeds();

print_r($genres);

Get new releases

$items = $api->getNewReleases([
    'country' => 'se',
]);

print_r($items);

Get the current user's playlists

$playlists = $api->getMyPlaylists();

print_r($playlists);

Get the current user's saved albums

$albums = $api->getMySavedAlbums();

print_r($albums);

Get the current user's top tracks or artists

$tracks = $api->getMyTop('tracks', [
    'limit' => 10,
]);

print_r($tracks);

Get recommendations based on artists, tracks, or genres

$recommendations = $api->getRecommendations([
    'seed_tracks' => ['0eGsygTp906u18L0Oimnem', '1lDWb6b6ieDQ2xT7ewTC3G'],
]);

print_r($recommendations);

Get the current user's saved tracks

$tracks = $api->getMySavedTracks();

print_r($tracks);

Get a track

$track = $api->getTrack('7EjyzZcbLxW7PaaLua9Ksb');

print_r($track);

Get multiple tracks

$tracks = $api->getTracks([
    '0eGsygTp906u18L0Oimnem',
    '1lDWb6b6ieDQ2xT7ewTC3G',
]);

print_r($tracks);

Get a user

$user = $api->getUser('username');

print_r($user);

Get a user's playlists

$playlists = $api->getUserPlaylists('username');

print_r($playlists);

Get a specific playlist

$playlist = $api->getUserPlaylist('username', '606nLQuR41ZaA2vEZ4Ofb8');

print_r($playlist);

Get all tracks in a user's playlist

$tracks = $api->getUserPlaylistTracks('username', '606nLQuR41ZaA2vEZ4Ofb8');

print_r($tracks);

Get the currently authenticated user

$user = $api->me();

print_r($user);

See if the current user's albums contains the specified ones

$contains = $api->myAlbumsContains([
    '1oR3KrPIp4CbagPa3PhtPp',
    '6lPb7Eoon6QPbscWbMsk6a'
]);

var_dump($contains);

See if the current user's tracks contains the specified tracks

$contains = $api->myTracksContains([
    '0eGsygTp906u18L0Oimnem',
    '1lDWb6b6ieDQ2xT7ewTC3G',
]);

var_dump($contains);

Reorder the tracks in a user's playlist

$api->reorderUserPlaylistTracks('username', 'playlist_id', [
    'range_start' => 1,
    'range_length' => 5,
    'insert_before' => 10,
    'snapshot_id' => 'GLiKqjND5IDWQCO9PwtLvHVjRXYYjEvpoliIQ5/gK7M5BMcxJ7rnGMGTKbmDRgU3',
]);

Replace all tracks in a user's playlist with new ones

$api->replaceUserPlaylistTracks('username', 'playlist_id', [
    '0eGsygTp906u18L0Oimnem',
    '1lDWb6b6ieDQ2xT7ewTC3G',
]);

Search for an album

$albums = $api->search('blur', 'album');

print_r($albums);

Search for an artist

$artists = $api->search('blur', 'artist');

print_r($artists);

Search for a track

$tracks = $api->search('song 2', 'track');

print_r($tracks);

Search with a limit

$tracks = $api->search('song 2', 'track', [
    'limit' => 5,
]);

print_r($tracks);

Search for tracks in a specific market

$tracks = $api->search('song 2', 'track', [
    'market' => 'se',
]);

print_r($tracks);

Update a user's playlist

$api->updateUserPlaylist('username', 'playlist_id', [
    'name' => 'New name',
]);

Unfollow an artist or user

$api->unfollowArtistsOrUsers('user', [
    'spotify',
    'spotify_france',
]);

Unfollow a playlist

$api->unfollowPlaylist('username', 'playlist_id');

Check if a user is following a playlist

$users = [
    'user1',
    'user2',
];

$api->userFollowsPlaylist('owner_id', 'playlist_id', [
    'ids' => $users,
]);

For more examples, please see the homepage.

License

MIT license. Please see LICENSE.md for more information.