Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Устраивать конкурсы в инстаграме сейчас модно. И удобно. Инстаграм предоставляет достаточно обширный API, который позволяет делать практически всё, что может сделать обычный пользователь ручками.Составляем в мозгу логику действий
- Создание ИБ Конкурсов и ИБ Фоток для конкурсов.
- Конкурсы создаются ручками операторов. Свойствами конкурсов являются Название, Активность, Время начала действия, Время окончания действия, Хештег, Описание, Результат, Разрешение работы скрипта.
- Фотки получаются скриптом для конкурса методом обращения к Инстаграм API и сохраняются в базе (ссылки на фотки).
Первым делом лезем искать библиотеку и выбираем самую популярную - от
Конечно же, у нас уже есть ключ и секрет приложения, которые нам предоставил заказчик.
Быстренько пишем скриптик для проверки функциональности.
//подключаем либу require 'instagram/Instagram.php'; use MetzWeb\Instagram\Instagram; //так как нам нужны только публичные данные, то достаточно одного ключа //подставьте свой =) $instagram = new Instagram(APP_KEY); //больше этого числа страниц получать не будем //так, на всякий случай $counter_pages = 500; //количество элементов на странице $counter_elements = 20; //получаем первую пачку котят $arImages = array(); //я думаю, понятно откуда берётся хэштег - из свойств конкурса //кстати, тестить на котятах не советую, их слишком много =) $photos = $instagram->getTagMedia($arContest['PROPERTY_HASHTAG_VALUE'], $counter_elements); //эта функция записывает фотки в общий массив, который потом можно использовать write_kitten($photos); //инициализируем для первой пагинации $res = $photos; //и он сказал: поехали! for ($i=0; $i<$counter_pages; $i++) { //получаем порцию котят, основываясь на данных пагинации, // полученных на предыдущем шаге $res = $instagram->pagination($res, $counter_elements); if (!$res->data || !count($res->data)) break; //эта функция записывает фотки в общий массив, который потом можно использовать write_kitten($res); |
Наибольшую проблемы обычно вызывает вопрос пагинации, так как получить одним запросом все фотки хештега не предоставляется возможным =)
Всё становится понятно, если посмотреть на первый результат, который возвращает API. Там содержится вся необходимая информация для следующего запроса. На основе этой информации и осуществляется пагинация запросов.
Потом мы получаем намёк в виде задачи от технического, что у нас все скрипты должны быть на агентах и что потом агенты надо перевести в крон. Переписываем немного код, для красоты добавляя его в один класс, и запихиваем его в инит (ссылка на скачивание класса в конце статьи).
Используя
Пишем инструкцию по использованию функционала конкурсов для операторов и радуемся (выдержки из инструкции найдёте внутри файла). Код класса предоставляется для примера, сначала настройте, а потом используйте =)