felipe-silveira-dev / php-discogs-api
Discogs API 使得开发者能够轻松与 Discogs 平台进行通信
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~5.0
- guzzlehttp/guzzle-services: ~0.5.0
- guzzlehttp/oauth-subscriber: ~0.2
Requires (Dev)
- phpunit/phpunit: ~4
Suggests
- ricbra/discogs-bundle: For integrating Discogs into Symfony2
README
此包不会自动更新。请设置 GitHub 钩子以 Packagist,以便在您推送时更新!
Discogs Api
这个库是 Discogs API v2.0 的 PHP 5.4 实现。[Discogs API](http://www.discogs.com/developers/index.html)。Discogs API 是一个基于 REST 的接口。通过使用此库,您无需担心与 API 进行通信:所有艰难的工作都已经完成。
此 API 是建立在巨人肩膀之上的:[Guzzle 4.0](http://guzzle.readthedocs.org/en/latest/)。这是一个绝对出色的库。
许可
此库在 MIT 许可下发布。请参阅 LICENSE 文件中的完整许可。
安装
首先 安装 composer。然后执行以下操作
$ composer require ricbra/php-discogs-api
要求
PHP >=5.4.0
用法
创建一个新的实例就像这样简单
<?php $client = Discogs\ClientFactory::factory([]);
用户代理
Discogs 要求您提供用户代理。您可以轻松地这样做
<?php $client = Discogs\ClientFactory::factory([ 'defaults' => [ 'headers' => ['User-Agent' => 'your-app-name/0.1 +https://www.awesomesite.com'], ] ]);
限制速率
Discogs 不喜欢您以过高的连接速率访问他们的 API。使用 ThrottleSubscriber
防止出现错误或被禁止
<?php $client = Discogs\ClientFactory::factory(); $client->getHttpClient()->getEmitter()->attach(new Discogs\Subscriber\ThrottleSubscriber());
身份验证
Discogs API 允许您通过简单的 Discogs Auth 流程 或更高级(更复杂)的 OAuth 流程 访问受保护的端点
Discogs 身份验证
如 Discogs 身份验证文档所述
为了访问受保护的端点,您需要根据您的具体情况注册消费者密钥和密钥或用户令牌
- 要轻松访问您自己的用户账户信息,请使用 用户令牌。
- 要获取访问需要身份验证的端点并构建第三方应用程序的权限,请使用 消费者密钥和密钥。
使用 Discogs Php API,您可以通过向自己的默认值添加一个 query
键将您的凭据添加到每个请求中,如下所示
$client = ClientFactory::factory([ 'defaults' => [ 'query' => [ 'key' => 'my-key', 'secret' => 'my-secret', ], ] ]);
OAuth
有许多端点需要 OAuth。幸运的是,使用 Guzzle 这只是小事。如果您在获取 token 和 token_secret 时遇到困难,请查看我的 示例实现。
<?php $client = Discogs\ClientFactory::factory([]); $oauth = new GuzzleHttp\Subscriber\Oauth\Oauth1([ 'consumer_key' => $consumerKey, // from Discogs developer page 'consumer_secret' => $consumerSecret, // from Discogs developer page 'token' => $token['oauth_token'], // get this using a OAuth library 'token_secret' => $token['oauth_token_secret'] // get this using a OAuth library ]); $client->getHttpClient()->getEmitter()->attach($oauth); $response = $client->search([ 'q' => 'searchstring' ]);
历史
另一个酷插件是历史插件
<?php $client = Discogs\ClientFactory::factory([]); $history = new GuzzleHttp\Subscriber\History(); $client->getHttpClient()->getEmitter()->attach($history); $response = $client->search([ 'q' => 'searchstring' ]); foreach ($history as $row) { print (string) $row['request']; print (string) $row['response']; }
更多信息与插件
有关 Guzzle 及其插件的更多信息,请参阅 文档。
执行搜索
截至 2014 年 8 月,此端点需要签名 OAuth 请求。
<?php $response = $client->search([ 'q' => 'Meagashira' ]); // Loop through results foreach ($response['results'] as $result) { var_dump($result['title']); } // Pagination data var_dump($response['pagination']); // Dump all data var_dump($response->toArray());
获取标签信息
<?php $label = $service->getLabel([ 'id' => 1 ]);
获取艺术家信息
<?php $artist = $service->getArtist([ 'id' => 1 ]);
获取发行信息
<?php $release = $service->getRelease([ 'id' => 1 ]); echo $release['title']."\n";
获取主发行信息
<?php $master = $service->getMaster([ 'id' => 1 ]); echo $master['title']."\n";
获取图像
Discogs 返回图像的完整 URL,因此只需使用内部客户端获取这些图像即可
php
$release = $client->getRelease([
'id' => 1
]);
foreach ($release['images'] as $image) {
$response = $client->getHttpClient()->get($image['uri']);
// response code
echo $response->getStatusCode();
// image blob itself
echo $client->getHttpClient()->get($image['uri'])->getBody()->getContents();
}
用户收藏
当 folder_id
不为 0
时,需要授权。
获取收藏夹
<?php $folders = $service->getCollectionFolders([ 'username' => 'example' ]);
获取收藏夹
<?php $folder = $service->getCollectionFolder([ 'username' => 'example', 'folder_id' => 1 ]);
通过文件夹获取收藏项目
<?php $items = $service->getCollectionItemsByFolder([ 'username' => 'example', 'folder_id' => 3 ]);
文档
更详细的文档可以在Discogs API v2.0 文档中找到。
贡献
实现了缺失的调用吗?欢迎提交PR!