Рубріки: Решения

Бот-анекдот в Twitter с помощью Python и Zapier

Богдан Мирченко

Очередная инструкция по созданию бота. На этот раз мы расскажем, как с помощью Python и инструмента для автоматизации задач и создания рабочих процессов путем интеграции различных приложений Zapier написать Twitter-бот, который будет раз в час постить шутки. Инструкцией в своем блоге на dev.to поделился разработчик Рахул Банерджи.

Что получится?

Разработанный бот будет получать шутки из официального приложения и постить их в Twitter раз в час. Вот как он будет выглядеть. Также Рахул Банерджи добавил в него функцию, которая дает пользователю возможность указывать список хештегов для каждого твита.

Пример твита

Шаг 1: Скрипт Python для запроса к приложению.

Для этого необходимо воспользоваться библиотекой запросов и сделать GET-запрос к приложению с шутками. Ниже приведен фрагмент кода для отправки запроса:

import request

url = "https://official-joke-api.appspot.com/random_joke"
response = response.get(url)
print(response.json())

Шутки написаны в формате вопрос-ответ, поэтому прежде чем их публиковать, нужно отформатировать текст, а также добавить в конце хештеги.

test= []
question = response.json()['setup']
answer = response.json()['punchline']
''' This list will be taken as an input '''
hashtags = ['humor', 'zapier', 'jokes']
hashtags = ['#'+tag for tag in hashtags]
hashtags = " ".join(hashtags)
text.append(question)
for_in range(6):
  text.append('.')
text.append(answer)
text.append(" ")
text.append(" ")
text.append(hashtags)

tweet = '\n'.join(text)
print(tweet)
  • Создаем пустой список для хранения вопроса, ответа, хештегов и символа .;
  • Метод join() будет использоваться для создания финального твита;
  • Перед использованием хештегов нужно добавить символ # и создать строку со всеми хештегами.

Пример твита: 

Что самое сложно в дизайне?
.
.
.
.
.
.
Удержаться от фич.

Шаг 2: Настройка учетной записи Zapier

Проекты в Zapier называются Zap’ами.

  • Перейдите на сайт официальный сайт Zapier и зарегистрируйтесь бесплатно;
  • Войдите в учетную запись;
  • Нажмите Make A Zap на левой боковой панели.

Шаг 3: Установка триггера 

Каждый проект в Zapier требует триггер — событие, запускающее Zap. Например, это может быть: получение электронного письма или пул-реквеста на GitHub, обновление RSS-канала, получение сообщения в Slack или заказа в WooCommerce или работа триггера по расписанию, который запускается ежечасно, ежедневно, еженедельно или ежемесячно. Так как мы хотим, чтобы твиты публиковались ежедневно, выбираем триггер по расписанию. Это первый элемент в правом столбце:

Выбор триггера

Затем:

  • Для параметра Trigger Event установить значение Every Hour и нажать кнопку Continue;
  • Запуск триггера по выходным, выбрать yes/no;
  • Триггер создан;
  • Чтобы его запустить, нажмите Test Trigger.

Если триггер сработал успешно, появится такая картинка

Шаг 4: Добавление скрипта Python

  • В Zapier нажмите кнопку + как показано ниже:

Подключение кода Python

  • Введите в строке поиска code и выберите Code by Zapier;
  • Для параметра Action Event выберите Run Python.

Подключение кода Python

Чтобы внести данные, нажмите кнопку + в разделе Input Data. Чтобы получить доступ к входам, нужно получить разрешение к словарю +. Значения ключевых хештегов хранятся в виде строки, а не списка.

Чтобы преобразовать их в список, можно воспользоваться функцией eval(). То же самое и со словарными значениями. 

  • Нажмите Continue, а затем Test and Review. Это запустит код.
import request

url = input_data.get("url")
hashtags = eval(input_data.get("hashtags"))
response = request.get(url)

text= []
question = response.json()['setup']
answer = response.json()['punchline']
''' This list will be taken as an input '''
hashtags = ['#'+tag for tag in hashtags]
hashtags = " ".join(hashtags)
text.append(question)
for_in range(6):
  text.append('.')
text.append(answer)
text.append(" ")
text.append(" ")
text.append(hashtags)

tweet = '\n'.join(text)
output = {}
output['tweet'] = tweet

Данные, которые должны быть возвращены, будут храниться в словаре с именем output.

Не забывайте нажимать Test and Review или Retest Action каждый раз, когда хотите запустить код. Ниже представлен результат выполнения скрипта. Этот выходной словарь будет использован в дальнейшем для написания шутки в Twitter.

Успешный запуск скрипта

Шаг 5: Подключение приложения

  • Нажмите кнопку + и добавьте новое действие как показано ниже.

Подключение приложения

  • Найдите в поисковой строке Twitter и выберите приложение Twitter;
  • В поле Action Event выберите Create Tweet;

Подключение приложения 

  • Подключите свою учетную запись Twitter и авторизуйте Zapier. Должно появиться следующее:
  • Выберите Run Python, а затем Tweet. Это переменная твита, которая была создана ранее скрипте Python. Нажмите Continue.

Успешный запуск приложения

Вот и все! Если описанные действия проделаны правильно, в вашем твиттер-аккаунте каждый час будет появляться анекдот.

Ранее мы писали о том, как с помощью Python создать бот для Instagram и  Telegram.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023