Как создать фото-бот для Твиттера с помощью Raspberry Pi и Node.js
СДЕЛАЙ САМ

Как создать фото-бот для Твиттера с помощью Raspberry Pi и Node.js

Начните работу с Node.js и создайте Twitter-бота, который будет транслировать фотографии и информацию, используя всего лишь Raspberry Pi!

Ищете способ сделать Twitter более полезным, хотя бы для других людей? Один из способов – создать автоматизированного Twitter-бота, который будет отправлять в Твиттер изображения с полезными описаниями. Вы можете сделать это вручную. или создать его с помощью Node.js и разместить на Raspberry Pi. Читайте дальше, чтобы узнать, как это сделать

Зачем создавать Twitter-бота?

Если вы когда-нибудь были в Twitter и видели аккаунты, которые публикуют фотографии, или факты, или карикатуры и т.д., то, скорее всего, они автоматизированы. Это отличный способ собрать аудиторию людей, интересующихся одной и той же темой

Но есть и другая причина, помимо ретвитов и фолловеров. Создание бота для Twitter научит вас некоторым полезным навыкам программирования. Ранее мы уже рассматривали, как создать базового Twitter-бота с помощью Python (также на Raspberry Pi), но в этот раз мы используем другой подход

В этом проекте мы собираемся использовать Node.js для создания бота для твиттинга фотографий на Raspberry Pi. Фотографии будут представлять собой снимки времен Первой мировой войны, сопровождаемые коротким предложением и атрибуцией). Эта информация будет храниться в массиве – базовой базе данных

Начните: Создайте свою базу данных

Если вы хотите создать фото-бота для твиттера, вам нужно начать со сбора изображений, которыми вы хотите поделиться. Это должны быть либо ваши собственные изображения, либо те, которые вы приобрели по лицензии Creative Commons или другой лицензии с открытым исходным кодом

Вы также должны отметить авторство и другую информацию, которую вы хотите приложить к изображениям. Мы вернемся к этой информации позже, когда бот будет запущен

Установите Node.js на Raspbian

Начните с установки Node.js. У вас уже должен быть установлен Raspberry Pi с установленной Raspbian. Для этого проекта мы рекомендуем Raspberry Pi 2 или более позднюю версию; проект был протестирован на Raspberry Pi 3 B+

В терминале (или через SSH) обновите список системных пакетов и обновите его до последней версии:

sudo apt-get update
sudo apt-get dist-upgrade

Следуйте подсказкам на экране и подождите, пока ваш Pi обновится. Как только вы закончите, перезагрузитесь с помощью

sudo reboot

Когда вы закончите, используйте curl для загрузки Node.js:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Далее установите его с помощью

sudo apt-get install -y nodejs

Когда все будет готово, выполните проверку, чтобы убедиться, что программное обеспечение было установлено правильно. Проще всего проверить номер версии:

node -v

Ответом должно быть что-то вроде v8. 11. 3 (или выше). Если вы видите нечто подобное, вы можете быть уверены, что Node.js готов к использованию

Создайте своего Twitter-бота

Следующий этап – ввод кода, который создаст бота. Начните с создания каталога:

mkdir twitterbot

Затем измените его на новый каталог для вашего бота:

cdtwitterbot

Здесь создайте файл с именем server.js

sudo nano server.js

В этом файле введите одну строку:

console.log('I am a Twitter bot!');

Нажмите Ctrl + X для сохранения и выхода, затем запустите скрипт:

node'/home/pi/twitterbot/server.js'

Это должно вернуть фразу ‘I am a Twitter bot!’. Теперь, когда вы убедились, что все работает, пришло время установить библиотеку Twit с помощью npm (менеджер пакетов Node). Убедитесь, что она установлена, введя:

npm -v

Снова отобразится номер версии

Далее следуют:

npm init

Начнется с запроса информации о создаваемом приложении Node.js. Параметры по умолчанию отображаются (как здесь), и вы можете просто нажать Enter, чтобы принять их. Вы также можете ввести свои собственные данные. По окончании настройки вам будет предложено подтвердить информацию словом ‘Да’

Следующий этап – установка модуля Twit из npm

npm install twit --save

Подождите, пока файлы загрузятся в подкаталог node_modules. После этого снова откройте файл server.js в nano

sudo nano server.js

Здесь удалите команду, введенную ранее, заменив ее на:

var fs = require('fs'),
    path = require('path'),
    Twit = require('twit'),
    config = require(path.join(__dirname,'config.js'));

Сохраните и выйдите, как раньше

Создайте приложение Twitter

Чтобы создать работающего бота Twitter, необходимо создать приложение Twitter. Это простой процесс, который требует, чтобы вы сначала зарегистрировали новую учетную запись Twitter. Обратите внимание, что для этого также требуется номер телефона для верификации аккаунта, и как только это будет сделано, перейдите на developer.twitter.com для создания приложения

Если у вас нет учетной записи разработчика, это может занять некоторое время, поскольку необходимо заполнить определенное количество форм. Это шаг, предпринятый Twitter во избежание спама, поэтому не торопитесь и отвечайте на вопросы точно

Нажмите Создать приложение и добавьте необходимые данные. На момент написания статьи система разработчиков находится в стадии перестройки, поэтому вам, возможно, придется подождать несколько дней (и ответить на несколько дополнительных вопросов)

Затем переключитесь на вкладку Keys and Tokens , в разделе Permissions найдите разрешение Access permission и убедитесь, что оно установлено на Read and Write (если нет, используйте Edit ). Затем переключитесь на вкладку Keys and Tokens и запишите следующее:

  • Ключ потребителя.
  • Секрет потребителя.

В разделе Токен доступа нажмите Создать для генерации:

  • Токен доступа.
  • Секрет маркера доступа.

Это ключи API, которые понадобятся для предоставления боту доступа к вашему аккаунту в Twitter

Вернувшись в командную строку, создайте config.js в nano:

sudo nano config.js

Добавьте следующее

var config = {
 consumer_key:        'XXXXX',
 consumer_secret:     'XXXXX',
 access_token:        'XXXXX',
  access_token_secret: 'XXXXX'
}
module.exports = config;

Там, где написано ‘XXXXX’, подставьте данные своего ключа API

Сохраните и выйдите, затем откройте файл server.js

sudo nano server.js

Здесь добавьте следующие строки в конец файла:

var T = new Twit(config);
T.post('statuses/update', { status:'My first tweet!'},function(err, data, response) {
  console.log(data)
});

Это должно выглядеть следующим образом:

Снова сохраните и выйдите, затем в командной строке введите

node server.js

Откройте свой аккаунт Twitter в браузере, чтобы увидеть результаты:

Вы убедились, что бот работает в Твиттере, так что пора дать ему занятие!

Создайте папку с изображениями

Чтобы разместить фотографии в твиттере, скопируйте собранные изображения в папку (обычно она называется images ). Начните с десятка или около того

Далее вернитесь к документу server.js:

sudo nano server.js

Здесь удалите код, который отправил твит, строку, начинающуюся с T.post(‘statuses/update’)

Затем замените ее функцией random_from_array. Она будет выбирать изображение случайным образом из папки images

functionrandom_from_array(images){
 returnimages Math.floor(Math.random() * images.length) ;
}

После этого нужно добавить вторую функцию, upload_random_image :

functionupload_random_image(images){
  console.log('Opening an image.');
  var image_path = path.join(__dirname,'/images/'+ random_from_array(images)),
      b64content = fs.readFileSync(image_path, { encoding:'base64'});
  console.log('Uploading an image.');
  T.post('media/upload', { media_data: b64content },function(err, data, response) {
   if(err){
      console.log('ERROR:');
      console.log(err);
    }
   else{
      console.log('Image uploaded!');
      console.log('Now tweeting it.');
      T.post('statuses/update', {
         media_ids: new Array(data.media_id_string)
       },
      function(err, data, response) {
        if(err){
           console.log('ERROR:');
           console.log(err);
        }
        else{
           console.log('Posted an image!');
        }
      }
      );
    }
  });
}

Эта функция выбирает изображение в случайном порядке из папки images и после выбора загружает его в Twitter с помощью API media/upload

Далее добавьте следующий код. Он найдет каталог images и возьмет из него изображение, публикуя его в случайном порядке каждые 60 секунд. Вы можете (и должны) изменить это время, которое представлено в коде цифрой 60000. Рекомендуется использовать более длинные промежутки

    setInterval(function(){
      upload_random_image(images);
    }, 60000);
  }
});

Сохраните это с помощью Ctrl + X , затем Yes для сохранения.(Источник на GitHub больше недоступен)

После этого однократное использование команды node server.js приведет к тому, что фотографии начнут твитить! (Если вам нужно завершить посты, нажмите Ctrl + Z , чтобы отменить скрипт server.js)

Добавление текста в фототвиты

Если вам нужно добавить текст к изображениям, это можно сделать с помощью массива. Массив будет ссылаться на имена файлов изображений и перечислять текст, который необходимо добавить. Например, вы можете добавить авторство к изображениям, которые вы не делали. Или можно добавить некоторые факты или цитаты

Начните с создания файла images.js

sudo nano images.js

Здесь добавьте следующий код. Это массив с двумя элементами, файл и источник. Они содержат имя файла изображения и атрибуцию (обычно URL)

var images =  
  { 
    file:'image0001.png',
   source'http://www.example.com/image0001.png'
  },
  { 
    file:'image0002.png',
   source'http://www.example.com/image0002.png'
  },
 

Повторите необходимые действия для каждого изображения, затем завершите файл images.js словами:

module.exports = images;

Сохраните и закройте файл, затем снова откройте server.js и добавьте это в список переменных:

images = require(path.join(__dirname,'images.js'));

Сохраните и выйдите, затем еще раз перезапустите Twitter-бота командой node server.js

Вы также можете использовать поле ‘источник’ для включения некоторого текста, объясняющего фон изображения. Его можно включить вместе с URL

Ваш первый Twitter-бот, готовый к использованию!

К этому моменту у вас уже должен быть запущен автопостинг Twitter-бота, который делится фотографиями, фактами и атрибутами по заданной теме

Вкратце процесс выглядит следующим образом:

  • Соберите свои фотографии.
  • Установите Node.js.
  • Создайте своего бота для Twitter.
  • Подать заявку на получение статуса разработчика в Twitter.
  • Создайте приложение для Twitter.
  • Добавьте массив атрибуции.
  • Начните писать твиты!.

Возможно, самое лучшее в этом – то, что код можно использовать для твиттера фотографий, фактов и атрибутов буквально на любую тему

Хотите узнать, какие еще боты можно запустить с помощью подобной установки? Посмотрите наш список лучших проектов Twitter-ботов для Raspberry Pi!

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий