papposilene / musicbrainz
用于访问MusicBrainz API的PHP库
Requires
- php: >=7.1.0
- psr/log: ~1.0
- xenos/asklucy: 1.*
Requires (Dev)
- guzzle/guzzle: ~3.8.0
- phpunit/phpunit: 3.7.*
Suggests
- guzzle/guzzle: Allows you to use the GuzzleHttpAdapter. You must install one of the supported adapters.
- rmccue/requests: Allows you to use the RequestsHttpAdapter. You must install one of the supported adapters.
This package is auto-updated.
Last update: 2024-09-27 08:19:17 UTC
README
本项目包含一个用于访问MusicBrainz JSON web服务的易于使用的PHP API客户端。
内容
安装
使用Git安装
git clone https://github.com/papposilene/MusicBrainz.git
使用Composer安装
该项目可在Packagist上找到:https://packagist.org.cn/packages/xenos/musicbrainz。
您可以使用以下命令在项目中使用它
composer require papposilene/musicbrainz
设置
HTTP适配器
由于HTTP客户端对于MusicBrainz API客户端是必需的,您必须将其作为构造函数参数提供。您可以使用任何HTTP客户端,通过实例化MusicBrainz\AbstractHttpAdapter
来使用适配器。本项目提供了一个用于Guzzle 6的适配器,但您可以为您的首选HTTP客户端编写自己的适配器。
使用Guzzle的使用
<?php use MusicBrainz\MusicBrainz; use MusicBrainz\HttpAdapter\GuzzleHttpAdapter; use GuzzleHttp\Client; $guzzleHttpAdapter = new GuzzleHttpAdapter(new Client); $musicBrainz = new MusicBrainz($guzzleHttpAdapter);
如果尚未要求,请务必将Guzzle
添加到您的composer项目中。
composer require guzzlehttp/guzzle
日志记录器
可选地,您可以通过将实现Psr\Log\LoggerInterface
的任何PSR-3日志记录器注入为第二个构造函数参数来设置任何PSR-3日志记录器。
使用Guzzle和Monolog的使用
<?php use Monolog\Logger; use MusicBrainz\MusicBrainz; use MusicBrainz\HttpAdapter\GuzzleHttpAdapter; use GuzzleHttp\Client; $guzzleHttpAdapter = new GuzzleHttpAdapter(new Client); $logger = new Logger('MusicBrainz API Client Logger'); $musicBrainz = new MusicBrainz($guzzleHttpAdapter, $logger);
如果尚未要求,请务必将Monolog
添加到您的composer项目中。
composer require monolog/monolog
MusicBrainz凭据
所有对user-tags
或user-ratings
的请求都需要认证。
<?php /** @var \MusicBrainz\MusicBrainz $musicBrainz*/ $musicBrainz->config() ->setUsername('myUsername') ->setPassword('myPassword');
自定义API路径
默认情况下,所有请求都在https://musicbrainz.org/ws/2上的MusicBrainz API执行。您可以按照以下方式设置另一个基本路径(例如,用于您自己的MusicBrainz安装)
<?php /** @var \MusicBrainz\MusicBrainz $musicBrainz*/ $musicBrainz->config() ->setApiUrl('https://example.com/ws/2');
用法
搜索请求
搜索API提供了用于搜索MusicBrainz 核心实体的方法。对于这些实体中的每一个,都有一个搜索方法,它接受一个特定的过滤器对象和分页的页面过滤器。返回值将是一个特定的列表对象,其中包含关于匹配实体的基本信息。有关更多信息,您必须执行一个带有实体MusicBrainz标识符(MBID)的查找请求。
以下示例搜索名为"Tom Waits"的艺术家,并将结果列表限制为最匹配项。
<?php use MusicBrainz\Filter\PageFilter; use MusicBrainz\Filter\Search\ArtistFilter; use MusicBrainz\Value\Name; $artistFilter = new ArtistFilter; $artistFilter->addArtistNameWithoutAccents(new Name('Tom Waits')); $pageFilter = new PageFilter(0, 1); $artistList = $this->musicBrainz->api()->search()->artist($artistFilter, $pageFilter);
查找请求
如果您有实体的MusicBrainz标识符(MBID)(通过搜索请求),您可以通过执行一个查找请求来获取更多关于它的信息。对于每个核心实体,都有一个特定的查找方法。作为第一个参数,您必须传递MBID。第二个参数是响应对象应包含的附加字段列表。
以下示例查找具有MBID c3aeb863-7b26-4388-94e8-5a240f2be21b的艺术家(他是Tom Waits),并请求将有关他的录音和工作信息附加到响应中。
<?php use MusicBrainz\Supplement\Lookup\ArtistFields; use MusicBrainz\Value\MBID; $fields = (new ArtistFields) ->includeRecordings() ->includeWorks(); self::$artist = $this->musicBrainz->api()->lookup()->artist( new MBID('c3aeb863-7b26-4388-94e8-5a240f2be21b'), $fields );
浏览请求
浏览请求是直接查找具有给定MusicBrainz标识符(MBID)直接链接到另一个实体的所有实体。
以下示例查找与具有MBID c3aeb863-7b26-4388-94e8-5a240f2be21b的艺术家(他是Tom Waits)直接链接的所有事件。与正常的查找请求类似,可以指定响应的附加字段,并添加分页的页面过滤器。
<?php use MusicBrainz\Filter\Browse\Relation\Entity\EventRelation; use MusicBrainz\Supplement\Browse\EventFields; $eventRelation = (new EventRelation) ->artist(new MBID('4aae17a7-9f0c-487b-b60e-f8eafb410b1d')); $eventFields = (new EventFields) ->includeTags(); $pageFilter = new PageFilter(0, 5); $eventList = $musicBrainz->api()->browse()->event($eventRelation, $eventFields, $pageFilter);