ngiraud/spotify-sdk-php

PHP中使用Spotify的SDK

1.0.4 2023-07-22 09:48 UTC

README

Latest Version on Packagist Tests Total Downloads

此包包含用于与Spotify Web API一起工作的PHP SDK。

目录

入门

需要PHP 8.1+

首先,通过Composer包管理器安装客户端

composer require ngiraud/spotify-sdk-php

如果你的项目还没有集成Guzzle,你也需要安装它

composer require guzzlehttp/guzzle

为了使用SDK,你需要请求一个access_token。你可以从Spotify Web API文档中获取一个示例。

如果你使用Laravel,你可以使用Socialite和社区在其网站上提供的适配器

以下是如何使用Laravel Socialite进行身份验证的示例。

Route::get('/spotify/redirect', function () {
    return Socialite::driver('spotify')
                    ->scopes([
                    // the list of scopes you want to allow
                    ])
                    ->redirect();
});

Route::get('/spotify/callback', function () {
    $user = Socialite::driver('spotify')->user();

    return $user->token;
});

你现在可以与Spotify的API交互了

use Spotify\Spotify;

$client = Spotify::client('<access-token>');

$album = $client->albums()->find('<spotify-album-id>', ['market' => 'FR']);

你也可以使用客户端凭据流程进行身份验证

use Spotify\Spotify;

$client = Spotify::basic('<client-id>', '<client-secret>');

$seeds = $client->genres()->seeds();

请注意,只有不访问用户信息的端点才能使用此特定身份验证流程。

使用方法

处理分页

在某些资源中,某些方法(如findMultiple)将返回一个Spotify\Support\PaginatedResults实例。此实例返回记录列表,并可以处理其他操作,例如获取下一页或前一页的结果。

可用方法

  • results()
  • links()
  • previousUrl()
  • nextUrl()
  • previous()
  • next()
  • meta()
  • total()

Albums资源

您可以通过客户端的albums方法访问专辑资源。

可用方法

  • find()
  • findMultiple()
  • tracks()
  • findSaved()
  • save()
  • deleteSaved()
  • checkSaved()
  • newReleases()

示例

// Returns an instance of Spotify\SingleObjects\Album
$album = $client->albums()->find('<spotify-album-id>');
echo $album->name;

// Returns an instance of Spotify\Support\PaginatedResults
$tracks = $client->albums()->tracks('<spotify-album-id>', ['market' => 'FR', 'limit' => 5]);
echo $tracks->results();

Artists资源

您可以通过客户端的artists方法访问艺术家资源。

可用方法

  • find()
  • findMultiple()
  • albums()
  • topTracks()
  • relatedArtists()

示例

// Returns an instance of Spotify\SingleObjects\Artist
$artist = $client->artists()->find('<spotify-artist-id>');
echo $artist->name;

// Returns an instance of Spotify\Support\PaginatedResults
$albums = $client->artists()->albums('<spotify-artist-id>', ['market' => 'FR', 'limit' => 5]);
echo $albums->results();

Audiobooks资源

注意:有声读物仅适用于美国、英国、爱尔兰、新西兰和澳大利亚市场。

您可以通过客户端的audiobooks方法访问有声读物资源。

可用方法

  • find()
  • findMultiple()
  • chapters()
  • findSaved()
  • save()
  • deleteSaved()
  • checkSaved()

示例

// Returns an instance of Spotify\SingleObjects\Audiobook
$audiobook = $client->audiobooks()->find('<spotify-audiobook-id>');
echo $audiobook->name;

// Returns an instance of Spotify\Support\PaginatedResults
$chapters = $client->audiobooks()->chapters('<spotify-audiobook-id>', ['limit' => 5]);
echo $chapters->results();

Categories资源

您可以通过客户端的categories方法访问分类资源。

可用方法

  • find()
  • browse()

示例

// Returns an instance of Spotify\SingleObjects\Category
$category = $client->categories()->find('<spotify-category-id>');
echo $category->name;

// Returns an instance of Spotify\Support\PaginatedResults
$categories = $client->categories()->browse();
echo $categories->results();

Chapters资源

您可以通过客户端的chapters方法访问章节资源。

可用方法

  • find()
  • findMultiple()

示例

// Returns an instance of Spotify\SingleObjects\Category
$chapter = $client->chapters()->find('<spotify-chapter-id>');
echo $chapter->name;

// Returns an instance of Spotify\Support\PaginatedResults
$chapters = $client->chapters()->browse();
echo $chapters->results();

Episodes资源

您可以通过客户端的episodes方法访问剧集资源。

可用方法

  • find()
  • findMultiple()
  • findSaved()
  • save()
  • deleteSaved()
  • checkSaved()

示例

// Returns an instance of Spotify\SingleObjects\Episode
$episode = $client->episodes()->find('<spotify-episode-id>');
echo $episode->name;

// Returns an array with the status for each episode
$episodes = $client->episodes()->checkSaved(['<spotify-episode-id>', '<spotify-episode-id>']);
echo $episodes;

Genres资源

您可以通过客户端的genres方法访问流派资源。

可用方法

  • seeds()

示例

// Returns an array of genres
$seeds = $client->genres()->seeds();
echo $seeds;

市场 资源

您可以通过客户端的 markets 方法访问市场资源。

可用方法

  • all()

示例

// Returns an array of markets
$markets = $client->markets()->all();
echo $markets;

玩家 资源

您可以通过客户端的 player 方法访问玩家资源。

可用方法

  • state()
  • transfer()
  • availableDevices()
  • currentlyPlayingTrack()
  • start()
  • pause()
  • next()
  • previous()
  • seek()
  • repeat()
  • volume()
  • shuffle()
  • recentlyPlayedTracks()
  • queue()
  • addToQueue()

示例

// Returns an instance of Spotify\SingleObjects\Player
$player = $client->player()->state();
echo $player->is_playing;

播放列表 资源

您可以通过客户端的 playlists 方法访问播放列表资源。

可用方法

  • find()
  • forCurrentUser()
  • forUser()
  • create()
  • update()
  • tracks()
  • reorderTracks()
  • replaceTracks()
  • addTracks()
  • deleteTracks()
  • featured()
  • forCategory()
  • coverImage()
  • addCoverImage()

示例

// Returns an instance of Spotify\SingleObjects\Playlist
$playlist = $client->playlists()->find('<spotify-playlist-id>');
echo $playlist->name;

// Returns an instance of Spotify\Support\PaginatedResults
$playlists = $client->playlists()->forCategory('<spotify-category-id>');
echo $playlists->results();

搜索 资源

您可以通过客户端的 search 方法访问搜索资源。搜索方法将返回一个 Spotify\SingleObjects\Search 实例,每种结果类型都可通过其自己的方法访问。此端点方法将返回一个 Spotify\Support\PaginatedResults 实例。

搜索后的可用方法

  • audiobooks()
  • albums()
  • artists()
  • episodes()
  • playlists()
  • shows()
  • tracks()

示例

// Returns an instance of Spotify\SingleObjects\Search
$results = $client->search('alice cooper', 'artist');

// $results->artists() is an instance of Spotify\Support\PaginatedResults
// $artist is an instance of Spotify\SingleObjects\Artist
foreach ($results->artists() as $artist) {
    echo $artist->name;
}

节目 资源

您可以通过客户端的 shows 方法访问节目资源。

可用方法

  • find()
  • findMultiple()
  • episodes()
  • findSaved()
  • save()
  • deleteSaved()
  • checkSaved()

示例

// Returns an instance of Spotify\SingleObjects\Show
$show = $client->shows()->find('<spotify-show-id>');
echo $show->name;

// Returns an instance of Spotify\Support\PaginatedResults
$episodes = $client->shows()->episodes('<spotify-show-id>');
echo $episodes->results();

歌曲 资源

您可以通过客户端的 tracks 方法访问歌曲资源。

可用方法

  • find()
  • findMultiple()
  • findSaved()
  • save()
  • deleteSaved()
  • checkSaved()
  • audioFeatures()
  • audioAnalysis()
  • recommendations()

示例

// Returns an instance of Spotify\SingleObjects\Track
$track = $client->tracks()->find('<spotify-track-id>');
echo $track->name;

// Returns an instance of Spotify\Support\PaginatedResults
$recommendedTracks = $client->tracks()->recommendations();
echo $recommendedTracks->results();

用户 资源

您可以通过客户端的 users 方法访问用户资源。

可用方法

  • me()
  • profile()
  • topArtists()
  • topTracks()
  • topItems()
  • followPlaylist()
  • unfollowPlaylist()
  • followingPlaylist()
  • followedArtists()
  • followArtists()
  • followUsers()
  • followArtistsOrUsers()
  • unfollowArtists()
  • unfollowUsers()
  • unfollowArtistsOrUsers()
  • followingArtists()
  • followingUsers()
  • followingArtistsOrUsers()

示例

// Returns an instance of Spotify\SingleObjects\User
$me = $client->users()->me();
echo $me->display_name;

测试

composer test
composer phpstan

代码风格检查

composer pint

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

如果您发现任何与安全相关的问题,请通过电子邮件contact@ngiraud.me联系,而不是使用问题跟踪器。

鸣谢

本软件包受到Nuno Maduro和Sandro Gehri制作的OpenAI PHP客户端软件包和Spatie的Mailcoach API SDK的启发。

许可证

MIT许可(MIT)。有关更多信息,请参阅许可文件