fightbulc / cirrus
Soundcloud API Reader Library 用于获取用户、歌曲和播放列表的数据
Requires
- php: >=5.4
- ext-json: *
- fightbulc/php_curl: 1.0.*
README
iiii i::::i iiii cccccccccccccccciiiiiiirrrrr rrrrrrrrr rrrrr rrrrrrrrr uuuuuu uuuuuu ssssssssss cc:::::::::::::::ci:::::ir::::rrr:::::::::r r::::rrr:::::::::r u::::u u::::u ss::::::::::s c:::::::::::::::::c i::::ir:::::::::::::::::r r:::::::::::::::::r u::::u u::::u ss:::::::::::::s c:::::::cccccc:::::c i::::irr::::::rrrrr::::::rrr::::::rrrrr::::::ru::::u u::::u s::::::ssss:::::s c::::::c ccccccc i::::i r:::::r r:::::r r:::::r r:::::ru::::u u::::u s:::::s ssssss c:::::c i::::i r:::::r rrrrrrr r:::::r rrrrrrru::::u u::::u s::::::s c:::::c i::::i r:::::r r:::::r u::::u u::::u s::::::s c::::::c ccccccc i::::i r:::::r r:::::r u:::::uuuu:::::u ssssss s:::::s c:::::::cccccc:::::ci::::::ir:::::r r:::::r u:::::::::::::::uus:::::ssss::::::s c:::::::::::::::::ci::::::ir:::::r r:::::r u:::::::::::::::us::::::::::::::s cc:::::::::::::::ci::::::ir:::::r r:::::r uu::::::::uu:::u s:::::::::::ss cccccccccccccccciiiiiiiirrrrrrr rrrrrrr uuuuuuuu uuuu sssssssssss
Cirrus
什么是Cirrus?
Soundcloud API Reader Library 用于获取和加工用户、歌曲和播放列表的数据。
是否有依赖项?
Cirrus 以 composer 包的形式提供。要求 PHP >= 5.3,其 CURL 扩展和一个 CURL 处理类。此外,您还需要 Soundcloud 的 API 密钥。在此 注册。
设置
- 下载
- 运行
composer install
- 获取 Soundcloud API 密钥
- 开始开发
结构
所有获取的结果都封装在 值对象 类中。这意味着您可以通过方法调用访问所有响应值。
// print the username echo $userVo->getUsername(); // or lets get all tracks from the user // and then the title from the first track $tracksVo = $userVo->getTracksVo(); echo $tracksVo[0]->getTitle();
一般来说,VO 使我们能够更好地维护代码。特别是如果我们对引用没有影响,比如 Soundcloud 的 API。
需要更多信息? 看看这篇文章。
示例:用户
1. 获取用户数据
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $userId = 428623; $userVo = \Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->fetchData(); var_dump($userVo);
如何获取例如用户的完整姓名
// user's full name echo $userVo->getFullName(); // or get all data for this user as an array var_dump($userVo->getData());
2. 获取用户数据及其关联
您可以选择获取哪些数据。下面列出了所有可能的选项。
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $userId = 428623; $userVo = \Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->withTracksData(TRUE) ->withPlaylistsData(TRUE) ->withFollowersData(TRUE) ->withFollowingsData(TRUE) ->withFavoritesData(TRUE) ->withWebProfilesData(TRUE) ->fetchData(); var_dump($userVo);
3. 获取特定类型的用户关联数据
只需要例如用户的歌曲?请看这里
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $userId = 428623; // get tracks by user id $userTracksVoMany = \Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->fetchTracksData(); var_dump($userTracksVoMany); // or get all followers $userFollowersVoMany = \Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->fetchFollowersData(); var_dump($userFollowersVoMany);
示例:歌曲
获取歌曲数据的原则与用户数据相同。
1. 获取歌曲数据
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $trackId = 64321366; $trackVo = \Cirrus\Tracks\TracksCirrus::init() ->setClientId($clientId) ->setId($trackId) ->fetchData(); var_dump($trackVo);
如您所注意到的,歌曲数据不包含完整的用户数据。如果您想获取所有用户详细信息,只需将 withCompleteUserData(TRUE)
添加到您的查询中
$trackVo = \Cirrus\Tracks\TracksCirrus::init() ->setClientId($clientId) ->setId($trackId) ->withCompleteUserData(TRUE) ->fetchData();
结果,您现在可以通过 $trackVo->getUserVo()
访问完整的用户详细信息。
所有可能查询的摘要
1. 用户数据
类
\Cirrus\Users\UsersCirrus
查询
\Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->fetchData();
关系
- 歌曲:
withTracksData(TRUE)
或通过fetchTracksData()
- 播放列表:
withPlaylistsData(TRUE)
或通过fetchPlaylistsData()
- 关注者:
withFollowersData(TRUE)
或通过fetchFollowersData()
- 关注对象:
withFollowingsData(TRUE)
或通过fetchFollowingsData()
- 收藏:
withFavoritesData(TRUE)
或通过fetchFavoritesData()
2. 歌曲数据
类
\Cirrus\Tracks\TracksCirrus
查询
\Cirrus\Users\TracksCirrus::init() ->setClientId($clientId) ->setId($trackId) ->fetchData();
关系
- 用户数据:
withCompleteUserData(TRUE)
3. 播放列表数据
类
\Cirrus\Tracks\PlaylistsCirrus
查询
\Cirrus\Users\PlaylistsCirrus::init() ->setClientId($clientId) ->setId($playlistId) ->fetchData();
关系
- 用户数据:
withCompleteUserData(TRUE)
艺术品 & 头像图片大小
Soundcloud 为歌曲艺术品和用户头像提供几个图片大小。
array( 'original' => 'original', '500' => 't500x500', '400' => 'crop', '300' => 't300x300', '100' => 'large', '67' => 't67x67', '47' => 'badge', '32' => 'small', '20' => 'tiny_artworks', // only artworks '18' => 'tiny_avatars', // only avatars '16' => 'mini', );
Soundcloud 的默认大小设置为 large
。要选择上面列出的任何大小,您可以使用 \Cirrus\Cirrus::getImageUrlBySize($imageUrl, $size)
。
用户头像
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $userId = 428623; $userVo = \Cirrus\Users\UsersCirrus::init() ->setClientId($clientId) ->setId($userId) ->fetchData(); // set image size to 400x400 \Cirrus\Cirrus::getImageUrlBySize($userVo->getUrlAvatar(), 400); // http://i1.sndcdn.com/avatars-000000788968-kgr595-crop.jpg?e2f8ae2
歌曲艺术品
require __DIR__ . '/../vendor/autoload.php'; $clientId = '[YOUR API KEY]'; $trackId = 64321366; $trackVo = \Cirrus\Tracks\TracksCirrus::init() ->setClientId($clientId) ->setId($trackId) ->fetchData(); // set image size to original size \Cirrus\Cirrus::getImageUrlBySize($trackVo->getUrlAvatar(), 'original'); // http://i1.sndcdn.com/artworks-000032638740-ttuwkl-original.jpg?e2f8ae2
还有其他吗?
仍然不确定如何使用这个库?请查看 test
文件夹。我包括了所有可获取数据的示例。请确保将 config.php.dist
重命名为 config.php
。别忘了放您的 API 密钥。
许可证
Cirrus 根据 MIT 许可证免费分发。
版权 (c) 2012 Tino Ehrich (opensource@efides.com)
本软件及其相关文档文件(以下简称“软件”)的副本,任何人均可免费获得,用于软件的任何处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许软件接受者进行此类操作,但须遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任源于合同行为、侵权行为或其他,无论是与软件本身、使用或软件的其他操作相关。