01.1.12 Apify¶
| Версия | 1.1.0 |
|---|---|
| Количество листов |
Оглавление¶
История изменений¶
| №1 | Дата: 07.07.26 | Автор:Ляшук Андрей | RFC: RPL-2825 | Версия: 1.1.0 |
|---|---|---|---|---|
| Изменено: В процедурах “01.1.12_1.1_1” и “01.1.12_1.2_1” при изменении Поста коллаборации добавлено определение параметра “Дата публикации” согласно значению параметра “timestamp”, полученному в ответе Apify. |
1. Apify¶
Сервис Apify используется для получения и обработки данных о поста коллаборации.
Интеграция с сервисом осуществляется на основе документации сервиса.
1_1 Переменные окружения
| Переменная окружения | Описание |
|---|---|
| APIFY_BASE_URL | Хост для выполнения запросов к сервису. |
| APIFY_API_TOKEN | АПИ токен для аутентификации запросов. |
| APIFY_INSTAGRAM_SCRAPER_ACTOR_ID | Идентификатор актора для получения данных из инстаграма. |
1.1 Очередь получения первичных данных о посте коллаборации через Apify¶
Повторная отправка сообщения очереди
Если сообщение не было обработано Обработчиком сообщений, должна выполняться повторная отправка сообщения Обработчику сообщений согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.1.1 Параметры сообщения “Пост коллаборации”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор поста коллаборации | collaboration_post_id |
01.1.12_1.1_1 Процедура обработки сообщения “Пост коллаборации”¶
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Пост коллаборации”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “Collaboration post”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура.
- Если не имеется “Поста коллаборации” идентификатор которого соответствует значению параметра “collaboration_post_id”, который был указан в сообщении для которого была инициирована данная процедура:
- Логирование события с Payload:
- event - "processed";
- title - “Collaboration post”;
- info - “Collaboration post not found”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Логирование события с Payload:
- Если имеется “Пост коллаборации” идентификатор которого соответствует значению параметра “collaboration_post_id”, который был указан в сообщении для которого была инициирована данная процедура выполняется этап “5” данной процедуры.
- Выполняется запрос “Run Actor synchronously with input and get dataset items” сервису “Apify”:
- С параметрами:
- actorId - {Согласно переменной окружения “APIFY_INSTAGRAM_SCRAPER_ACTOR_ID”}.
- С телом запроса:
- directUrls - “Ссылка” поста коллаборации, для которой инициирована данная процедура;
- resultType - posts;
- resultsLimit - 1;
- addParentData - true.
- Если запрос, который должен был быть выполнен на этапе “5” данной процедуры:
- Не был выполнен:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post”;
- error - “Can’t send request”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются;
- Если сообщение “Collaboration post” удаляется из очереди:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Collaboration post update has not been processed. Reason: request was not sent. Collaboration post id: {collaboration_post_id}.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- Выполняется логирование события с Payload:
- Был выполнен:
- И код ответа не “201”:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post”;
- error - “Collaboration post update return error”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Если сообщение “Collaboration post” удаляется из очереди:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Collaboration post update has not been processed. Reason: webhook returned error. Collaboration post id: {collaboration_post_id}.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется логирование события с Payload:
- И код ответа “201”:
- Выполняется изменение “Поста коллаборации”, для которого инициирована данная процедура:
- Количество лайков - согласно значению параметра “likesCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество комментариев - согласно значению параметра “commentsCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество просмотров - согласно значению параметра “videoViewCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество репостов - согласно значению параметра “reshareCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество проигрываний - согласно значению параметра “videoPlayCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Дата публикации - согласно значению параметра “timestamp”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры.
- Если значение параметра “type”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры:
- Image, выполняется “01_2.1.8.2.2 Процедура сохранения файла” с параметрами:
- Ссылка на файл - согласно значению параметра “displayUrl”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры.
- Video, выполняется “01_2.1.8.2.2 Процедура сохранения файла” с параметрами:
- Ссылка на файл - согласно значению параметра “videoUrl”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры.
- Sidecar, для каждого объекта в массиве “childPosts”, выполняется “01_2.1.8.2.2 Процедура сохранения файла” с параметрами:
- Ссылка на файл - Если значение параметра childPosts[ ].type:
- Image, согласно значению параметра “childPosts[ ].displayUrl”;
- Video, согласно значению параметра “childPosts[ ].videoUrl”.
- Для каждого файла, который был создан при выполнении этапа “6_b_ii_2” данной процедуры выполняется создание “Файла поста коллаборации” с параметрами:
- Идентификатор файла - Идентификатор файла, для которого выполняется этап “6_b_ii_3” данной процедуры;
- Идентификатор поста коллаборации - Идентификатор поста коллаборации, который указан при инициации данной процедуры;
- Тип - “Пост”.
- “07_3.3.2_7 Процедура отправки статистики поста коллаборации в веб-сокет” с параметрами:
- Идентификатор поста коллаборации - “Идентификатор” поста коллаборации, для которого инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется изменение “Поста коллаборации”, для которого инициирована данная процедура:
- И код ответа не “201”:
1.2 Очередь обновления данных о посте коллаборации через Apify¶
Повторная отправка сообщения очереди
Если сообщение не было обработано Обработчиком сообщений, должна выполняться повторная отправка сообщения Обработчику сообщений согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.2_1 Параметры сообщения “Пост коллаборации для обновления данных”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор поста коллаборации | collaboration_post_id | |
| Номер попытки обновления | attempt_number |
01.1.12_1.2_1 Процедура обработки сообщения “Пост коллаборации для обновления данных”¶
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Пост коллаборации для обновления данных”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “Collaboration post for update data”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- data.attempt_number - Номер попытки обновления, который был указан в сообщении для которого была инициирована данная процедура.
- Если не имеется “Поста коллаборации” идентификатор которого соответствует значению параметра “collaboration_post_id”, который был указан в сообщении для которого была инициирована данная процедура:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post for update data”;
- info - “Collaboration post not found”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- data.attempt_number - Номер попытки обновления, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется логирование события с Payload:
- Если имеется “Пост коллаборации” идентификатор которого соответствует значению параметра “collaboration_post_id”, который был указан в сообщении для которого была инициирована данная процедура и в этом сообщении:
- Имеется значение у параметра “Номер попытки обновления” и его значение:
- Не соответствует значению одному из “Номеров попыток обновления” настройки “Политики выполнения запросов к Apify”:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post for update data”;
- info - “Attempt number not found”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- data.attempt_number - Номер попытки обновления, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Соответствует значению одному из “Номеров попыток обновления” настройки “Политики выполнения запросов к Apify”, выполняется этап “5” данной процедуры.
- Не соответствует значению одному из “Номеров попыток обновления” настройки “Политики выполнения запросов к Apify”:
- Не имеется значение у параметра “Номер попытки обновления”, выполняется этап “5” данной процедуры.
- Имеется значение у параметра “Номер попытки обновления” и его значение:
- Выполняется запрос “Run Actor synchronously with input and get dataset items” сервису “Apify”:
- С параметрами:
- actorId - {Согласно переменной окружения “APIFY_INSTAGRAM_SCRAPER_ACTOR_ID”}.
- С телом запроса:
- directUrls - “Ссылка” поста коллаборации, для которой инициирована данная процедура.
- resultType - posts;
- resultsLimit - 1;
- addParentData - true.
- Если запрос, который должен был быть выполнен на этапе “5” данной процедуры:
- Не был выполнен:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post for update data”;
- error - “Can’t send request”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- data.attempt_number - Номер попытки обновления, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются;
- Если сообщение “Collaboration post” удаляется из очереди:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Collaboration post update has not been processed. Reason: request was not sent. Collaboration post id: {collaboration_post_id}.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- Выполняется логирование события с Payload:
- Был выполнен:
- И код ответа не “201”:
- Выполняется логирование события с Payload:
- event - "processed";
- title - “Collaboration post for update data”;
- error - “Collaboration post update return error”;
- data.collaboration_post_id - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- data.attempt_number - Номер попытки обновления, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Если сообщение “Collaboration post” удаляется из очереди:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Collaboration post update has not been processed. Reason: webhook returned error. Collaboration post id: {collaboration_post_id}.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется логирование события с Payload:
- И код ответа “201”:
- Выполняется изменение “Поста коллаборации”, для которого инициирована данная процедура:
- Количество лайков - согласно значению параметра “likesCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество комментариев - согласно значению параметра “commentsCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество просмотров - согласно значению параметра “videoViewCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество репостов - согласно значению параметра “reshareCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Количество проигрываний - согласно значению параметра “videoPlayCount”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры;
- Дата публикации - согласно значению параметра “timestamp”, который был получен в ответе на запрос, который был выполнен на этапе “5” данной процедуры.
- Если имеется “Номер попытки обновления” настройки “Политики выполнения запросов к Apify” значение которого на 1 больше, чем у параметра “Номер попытки обновления”, которой был указан в сообщении, для которого инициирована данная процедура:
- Выполняется добавление сообщения “Пост коллаборации для обновления данных” в “Очередь обновления данных о посте коллаборации через Apify”:
- С параметрами:
- Идентификатор поста коллаборации - Идентификатор поста коллаборации, который был указан в сообщении для которого была инициирована данная процедура;
- Номер попытки обновления - Номер попытки обновления, который был определен на этапе “6_b_ii_2” данной процедуры;
- С опциями:
- delay_stamp - “Период отсрочки” настройки “Политики выполнения запросов к Apify”, номера попытки обновления, который был определен на этапе “6_b_ii_2” данной процедуры.
- “07_3.3.2_7 Процедура отправки статистики поста коллаборации в веб-сокет” с параметрами:
- Идентификатор поста коллаборации - “Идентификатор” поста коллаборации, для которого инициирована данная процедура.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется изменение “Поста коллаборации”, для которого инициирована данная процедура:
- И код ответа не “201”: