Битрикс и Инстаграм. Собираем фотки по хештегу для конкурса
Устраивать конкурсы в инстаграме сейчас модно. И удобно. Инстаграм предоставляет достаточно обширный API, который позволяет делать практически всё, что может сделать обычный пользователь ручками.
Составляем в мозгу логику действий
Первым делом лезем искать библиотеку и выбираем самую популярную - от ; документации и примеров предостаточно, поэтому сразу можно приступать к делу.
Конечно же, у нас уже есть ключ и секрет приложения, которые нам предоставил заказчик.
Быстренько пишем скриптик для проверки функциональности.
Наибольшую проблемы обычно вызывает вопрос пагинации, так как получить одним запросом все фотки хештега не предоставляется возможным =)
Всё становится понятно, если посмотреть на первый результат, который возвращает 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. Там содержится вся необходимая информация для следующего запроса. На основе этой информации и осуществляется пагинация запросов.
Потом мы получаем намёк в виде задачи от технического, что у нас все скрипты должны быть на агентах и что потом агенты надо перевести в крон. Переписываем немного код, для красоты добавляя его в один класс, и запихиваем его в инит (ссылка на скачивание класса в конце статьи).
Используя переводим агенты на крон.
Пишем инструкцию по использованию функционала конкурсов для операторов и радуемся (выдержки из инструкции найдёте внутри файла). Код класса предоставляется для примера, сначала настройте, а потом используйте =)
Просмотров:
5204