ngiraud / spotify-sdk-php
PHP中使用Spotify的SDK
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.7
Requires (Dev)
- laravel/pint: ^1.2
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1
This package is auto-updated.
Last update: 2024-09-08 23:09:23 UTC
README
此包包含用于与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)。有关更多信息,请参阅许可文件。