/spotify-web-api-php

A PHP wrapper for Spotify's Web API.

Primary LanguagePHPMIT LicenseMIT

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 track audio analysis

$analysis = $api->getAudioAnalysis('0eGsygTp906u18L0Oimnem');

print_r($analysis);

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 recently played tracks

$tracks = $api->getMyRecentTracks();

print_r($tracks);

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. The Spotify Web API Console can also be of great help when trying out the API.

License

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