В настоящее время Twitter является одной из самых популярных социальных платформ. Она широко используется как для общения людей в личных целях, так и для взаимодействия различных бизнес процессов. Для бизнеса Twitter предоставляет такую удобную возможность как формирование твитов (коротких сообщений в Twitter) по расписанию или выполнение каких-либо автоматизированных действий.
В данной статье мы рассмотрим создание, настройку и управление ботом сети Twitter с помощью платы Raspberry Pi. Данный бот будет способен публиковать и читать твиты в сети Twitter. К примеру, эти способности бота могут понадобиться в том случае, когда, к примеру, плата Raspberry Pi получает изображения из какого-нибудь источника в случайные интервалы времени и затем публикует их в твитах через регулярные интервалы времени.
Во многом данный проект будет основан на библиотеке Twython – это специальный модуль, написанный на языке python, для взаимодействия с сетью Twitter. С помощью библиотеки Twython можно в сети сравнительно просто делать привычные многим вещи: публиковать и читать твиты, загружать и считывать изображения, изменять фоновое изображение и многое другое. Twython требует авторизации в сети Twitter, это можно сделать с помощью создания приложения twitter.
Необходимые компоненты
- Плата Raspberry Pi (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
- Клавиатура.
- Мышка.
- Монитор.
- HDMI кабель.
В данном проекте авторы в качестве операционной системы для платы использовали Raspbian stretch OS. Мы надеемся что вы хотя бы в некотором плане знакомы с данной операционной системой. Также надеемся что вы знакомы с удаленным управлением Raspberry Pi с помощью протокола SSH и программным обеспечением таким как putty. В интернете очень много информации по поводу того, как пользоваться данными инструментами, поэтому в данной статье мы на них останавливаться не будем.
Примечание: оригинал данной статьи (ссылка на него есть в конце статьи) написан в 2018 г. и тогда еще не было Raspberry Pi OS (как сейчас). Скорее всего что все, что рассмотрено в данном проекте, будет работать и на Raspberry Pi OS, но я пока лично этого не проверял. Решил перевести данный проект потому что лично мне он показался очень интересным, в дальнейшем планирую попробовать возможности взаимодействия Raspberry Pi с сетью Twitter.
Для тех, кто имеет небольшой опыт общения со Raspbian Stretch, отметим, что по умолчанию в данной ОС протокол SSH отключен и вы должны будете его включить чтобы иметь возможность управлять работой Raspberry Pi по протоколу SSH. Это можно включить, подключив к плате монитор и включив в настройках SSH. Другой способ сделать это – создать файл с именем ssh (без расширения) и скопировать его в корневой каталог вашей SD карты. Это можно сделать, вставив SD карту в компьютер.
Установка Twython на Raspberry Pi
Первое, что нам необходимо сделать в данном проекте, это установить библиотеку Twython на плату Raspberry Pi, которая позволит нам взаимодействовать с twitter.
Для установки библиотеки Twython выполните следующую последовательность шагов.
Шаг 1. Установите самые свежие обновления на плату Raspberry Pi.
1 2 |
sudo apt-get update sudo apt-get upgrade |
Шаг 2. Установите инструменты python.
1 |
sudo apt-get install python-setuptools |
Шаг 3. Установите pip если он у вас еще не установлен.
1 |
sudo easy_install pip |
Шаг 4. Установите twython с помощью pip.
1 |
sudo pip install twython |
После выполнения этих шагов в вашей плате Raspberry Pi будет установлена библиотека Twython, готовая к использованию из языка Twython.
Создание приложения Twitter
Чтобы взаимодействовать с сетью Twitter вне ее основного домена нам будут необходимы twitter API – чтобы получить к ним доступ мы создадим новое приложение Twitter с помощью библиотеки Twython. Для этого выполните следующую последовательность шагов:
Шаг 1. Зарегистрируйте себе аккаунт в Twitter (если у вас его еще нет), после чего откройте страницу по адресу https://apps.twitter.com/app/new.
Шаг 2. Заполните открывшуюся форму. Пример ее заполнения показан на следующем рисунке.
Внизу страницы примите условия пользовательского соглашения и нажмите подтвердить. После этого ваше приложение будет создано.
После этого на следующей странице (на которую вы попадете после того как нажмете подтвердить) вы увидите настройки приложения, ключи, токены доступа и разрешения. Перейдите на вкладку с разрешениями (permissions) и убедитесь в том, что у вас там выставлены настройки как на следующем рисунке:
Шаг 3. Далее нам необходимо сгенерировать токены/маркеры доступа (access tokens), которые будет использоваться для доступа к приложению twitter из скрипта на python.
Шаг 4. Также для использования Twython вам потребуется пользовательский пароль (consumer secret) и пользовательский ключ (consumer key), которые можно найти на странице (вкладке) с токеном.
С ключами и токенами доступа "на руках" и установленной библиотекой Twython мы теперь готовы к написанию скрипта, который будет способен читать и писать твиты.
Скрипт Python для бота Twitter на Raspberry Pi
Удостоверьтесь, что вы находитесь в корневом каталоге, с помощью команды:
1 |
cd ~ |
Если у вас еще нет каталога, в котором вы будете хранить свои проекты Raspberry Pi, то создайте его с помощью команды:
1 |
mkdir rpiprojects |
Вы можете дать любое название этому каталогу (на свой вкус).
Затем перейдите в этот созданный каталог:
1 |
cd rpiprojects |
Затем откройте редактор чтобы писать в нем скрипт на python:
1 |
sudo nano pitwits.py |
Вы можете дать любое название этому файлу со скриптом на python.
В открывшемся окне редактора напишите следующие строчки кода:
1 2 3 4 5 6 7 8 9 10 |
#!/usr/bin/env python import sys from twython import Twython #enter the keys and secrets inbetween the quotes consumerKey = ' ' consumerSecret= '' accessKey= ' ' accessSecret = ' ' api = Twython(consumerKey,consumerSecret,accessKey,accessSecret) api.update_status(status=sys.argv) |
В этот фрагмент кода программы вам необходимо вставить свои ключи и токены доступа, которые вы получили при создании приложения twitter. Затем нажмите Ctrl + X и затем Y чтобы сохранить изменения и выйти из редактора.
Когда скрипт на python будет готов, у нас появится возможность публиковать твиты, но перед этим нам необходимо сделать скрипт на python в виде исполнимого файла. Это можно сделать с помощью следующей команды в терминале:
1 |
sudo chmod +x pitwits.py |
После выполнения этой команды скрипт станет исполнимым файлом и мы сможем публиковать твиты с помощью команд, подобной этой:
1 |
sudo python pitwits.py ‘yee-haw, my Pi tweets’ |
Автоматизация твитов с Raspberry Pi
Одна из самых замечательных вещей, которую мы можем сделать на этом этапе – это автоматизировать публикацию твитов, публикуемых платой Raspberry Pi. К примеру, если у вас собран проект метеостанции на Raspberry Pi, то вы можете автоматически публиковать данные с нее в твитах. Возможность автоматического постинга твитов будет полезна и во многих других случаях.
Для этого все, что вам необходимо сделать, это включить скрипт, который, к примеру, измеряет температуру и влажность окружающего воздуха, в состав ранее рассмотренного нами фрагмента кода для публикации твитов и сделать cron job (программа, используемая для периодического выполнения заданий в определённое время).
К примеру, рассмотрим пример включения подобного скрипта для случая когда у нас камера делает снимки определенных событий и мы хотим чтобы снимки (изображения) этих событий публиковались в твитах автоматически.
Для этого внесем небольшие изменения в файл pitwits.py и дадим получившемуся файлу новое имя piimagetwits.py.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/usr/bin/env python import sys from twython import Twython import os import pygame import pygame.camera from pygame.locals import * #enter the keys and secrets inbetween the quotes consumerKey = ' ' consumerSecret= '' accessKey= ' ' accessSecret = ' ' pygame.init() pygame.camera.init() api = Twython(consumerKey,consumerSecret,accessKey,accessSecret) cam = pygame.camera.Camera("/dev/video0",(640,480)) cam.start() image = cam.get_image() pygame.image.save(image,'eventimg.jpg') photo = open('webcam.jpg','rb') api.update_status_with_media(media=photo, status='Event photo Updates ') |
Сохраним файл и выйдем из него.
Сделаем этот скрипт исполнимым файлом:
1 |
Sudo chmod +x piimagetwits.py |
Создадим cron job, для этого выполним следующую команду:
1 |
sudo crontab -e |
Чтобы создать cron job добавьте эти строки ниже, в них укажите тот тайминг, который вам нужен.
*/60 * * * * * python /home/pi/rpiprojects/piimagetwits.py
Эта cron job будет исполняться каждую минуту (мы ввели тайминг 60 секунд), но вы можете указать свой тайминг.
Больше информации о том, как использовать тайминги в cron job, вы можете найти в описании того редактора, который вы используете. Мы в нашем проекте использовали редактор vim.
Тестирование работы проекта
На следующих рисунках показан пример публикации твитов с помощью нашего проекта.
Данный обучающий проект может быть улучшен вами до того практического применения, которое вам необходимо от социальной сети Twitter.
123 просмотров