yandex / fotki
与 Yandex.Fotki 交互的 PHP 库 / PHP 实现了与 Yandex.Fotki 服务工作的 API
v0.4.2
2013-11-16 20:07 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 14:47:28 UTC
README
功能
- 通过用户名/密码获取 Fimp 令牌
- 获取 OAuth 令牌
- 获取服务文档
- 上传图像 ->
- 分页显示集合
- 获取相册数据
- 添加新相册 ->
- 编辑相册 ->
- 删除相册 ->
- 获取照片数据
- 编辑照片 ->
- 删除照片 ->
- 获取标签数据
- 添加标签 ->
- 编辑标签 ->
- 删除标签 ->
- 获取相册集合数据
- 添加新相册 ->
- 获取相册照片集合数据
- 将图像上传到相册 ->
- 获取总照片集合数据
- 将图像上传到总照片集合 ->
- 获取标签集合数据
- 获取标签照片集合数据
- 获取新有趣照片集合 ->
- 获取热门照片集合 ->
- 获取“照片日”集合 ->
示例
$api = new \Yandex\Fotki\Api($login); // Загрузка сервисного документа, в котором ссылки на коллекции // пункт необязательный, но в Яндексе написано, что ссылки могут // когда-нибудь измениться $api->loadServiceDocument() // Аутентификация // Принимает пароль от аккаунта или fimp-token // Внимание! При получении Fimp-токена - Яндекс часто отвечает 502 ошибкой try { $api->auth($passwordOrToken); } catch(\Yandex\Fotki\Exception\ServerError $ex) { // Яндекс ответил 502. Повторите попытку снова. Как правило, раза с 5 удается получить токен } catch(\Yandex\Fotki\Exception\Api\Auth $ex) { // Что-то с самой авторизацией (см. $ex->getMessage()) } // Сохраните токен куда-нибудь. По документации - время жизни токена неограничено $token = $api->getAuth()->getToken(); // Получение коллекции альбомов $collection = $api->getAlbumsCollection() ->setLimit(5) // лимит на загрузку 5 альбомов ->load(); $collection->getList(); // Загрузка всей коллекции $collection = $api->getAlbumsCollection()->loadAll(); // Постраничная загрузка коллекции try { $collection = $api->getAlbumsCollection()->load()->next()->next()->next(); } catch(\Yandex\Fotki\Exception\Api\StopIteration $ex) { // Окончание постраничной навигации } // Список альбомов в коллекции $albums = $collection->getList(); $album = null; // Проходимся по альбомам коллекции (берем первый попавшийся) foreach($albums as $id => $item) { $album = $item; break; } // Работа с альбомом - это работа с коллекцией фотографий // и мета-информацией об альбоме. // Загружаем все фотки альбома $photos = $album->loadAll()->getList();
在整个代码中均添加了 php-doc 注释,因此 IDE 应该能够提供关于对象方法的标准提示。
缓存
API 对象实现了 Serializable 接口,这允许您以文本表示保存获取到的对象。
$api = new \Yandex\Fotki\Api($login); $api->auth($token); // Загружаем все альбомы в коллекцию $collection = $api->getAlbumsCollection()->loadAll(); // Сериализуем коллекцию (и можем сохранить в кэш, например) echo serialize($collection);
加载照片
$api = new \Yandex\Fotki\Api($login); $api->oauth($token); // Получаем путь к картинке на сервере. $imgPath = 'path_to_photo.png'; try { // Попробуем загрузить картинку на Яндекс.Фотки // Вторым параметром можно (не обязательно) указать id фотоальбома, в который должна попасть фотка $arPhoto = $api->sendPhoto(array('image'=> '@'. $imgPath,'access' => 'public'), 479011); } catch (\Yandex\Fotki\Exception\Api $ex) { } // Посмотрим что получилось. print_r($arPhoto);