yandex / fotki
PHP-library for interactions with Yandex.Fotki / PHP реализация API для работы с сервисом Яндекс.Фотки
v0.4.2
2013-11-16 20:07 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-12-21 16:00:04 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);