茨城県つくば市でモバイルアプリ(iPhone、Android)のプログラミングをする日記です。あとWordPress、Raspberry Pi、Arduinoなど。

モバイルプログラミング@つくば

Raspberry Pi(ラズベリーパイ)をTwitterのbot化して自動で写真をアップロードする

投稿日:2014年10月10日 更新日:

こんにちは、okuzawatsです。
ひたすらRaspberry Pi(ラズベリーパイ)をいじっています。

今回は、Raspberry Piをツイッターのbotにして、ついでに自動で写真を撮影してツイッターにアップロードできるようにしてみました。
その方法をメモしておきます。
最終的には、こんな感じで画像がアップロードされるようになります。

Raspberry Pi Twitter bot

以下のステップでbotを作っていきます。

  1. Raspberry Piの環境
  2. Twitterへのアプリケーション登録
  3. Pythonを使ったbotの作成
  4. Raspberry Piのcronの設定

Raspberry Piの環境構築

今回、Raspberry Piのbot化に使った環境は以下のとおりです。
Amazon価格で合計14,617円でした。
もっと安く組むことも可能と思います。
例えば、撮影した場所の付近にコンセントがあるならモバイルバッテリーは不要です(代わりにACアダプタが必要になります)。

Raspberry Pi(ラズベリーパイ)を動かすために必要な周辺機器、値段、合計金額

こんにちは、okuzawatsです。 Raspberry Piが趣味となりつつあります。 前回の記事では、Raspberry Pi(ラズベリーパイ)の買い方やモデルの違いを説明しました。 今回は、購入 ...

続きを見る

ラズベリーパイ本体

Raspberry Piの本体が必要です。

注:実際には初代Raspberry Pi B+を使いました。

OS

Raspberry PiのOSは、人気のあるRaspbianを使います。

Raspbian

Raspberry PiにOSをインストールする方法については、以下の記事を参照。

Raspberry Pi(ラズベリーパイ)にOSをインストールする方法と各OSの特徴

こんにちは、okuzawatsです。 Raspberry Pi(ラズベリーパイ)で遊ぶ日々です。 前回の記事では、Raspberry Pi B+を動かすために必要な周辺機器を揃えました。 Raspbe ...

続きを見る

カメラモジュール

Raspberry Piに接続可能なカメラモジュールを使います。

注:初代Raspberry Pi以外で動くかどうかは確認していません。

Raspberry Piにカメラモジュールを接続するする方法については、以下の記事を参照のこと。

Raspberry Pi(ラズベリーパイ)にカメラモジュールを接続する

こんにちは、okuzawatsです。 Raspberry Pi(ラズベリーパイ)で遊び始めましたが、すごく楽しいですね! 今回は、Raspberry Pi Model B+にカメラモジュールを接続して ...

続きを見る

ラズベリーパイのケース(カメラモジュール用の穴があるもの)

カメラモジュール用に穴の開けられた、Raspberry Piのケースを使います。

Wi-Fiドングル

Raspberry Piをインターネットに接続するため、Wi-Fiドングルを使ってWi-Fiにつなぎます。

Raspberry Piとの相性は確認済みです。

モバイルバッテリー(8,800mAhの大容量のもの)

モバイルバッテリーでRaspberry Piを動かすのが良いのかどうかはともかくとして、モバイルバッテリーでRaspberry Piを動かします。

Twitterにアプリケーションを登録

まずはTwitterにログインして、アプリケーションを登録します。
以下のページにアクセスして、適当な名前で登録しておきましょう。
ちなみに、わたくしは「Piカメラアップローダー」という名前で登録しました。

Twitter Application Management

アプリケーションを登録すると発行される、「Consumer Key(API Key)」「Consumer Secret(API Secret)」「Access Token」「Access Token Secret」をメモしておきます。
APIをとおすために必要です(後述)。

PythonでTwitterのbotを実装

TwitterのbotをPythonで作っていきます。
Raspberry Piのエディタを使ってもいいですが、わたくしは他のPCで書いてRaspberry Piに保存しました。
どちらの場合でもcronを動かす時にファイルのフルパスが必要になりますので、覚えておきましょう。

PythonからTwitterのAPIにアクセスするには、「Twython」というモジュールを使うのが良さそうです。

Actively maintained, pure Python wrapper for the Twitter API. Supports both normal and streaming Twitter APIs

(出典:Twython — Twython 3.1.2 documentation

Twythonを使ってbotを実装していきます。
まずはおまじないとモジュールのインポートを行います。

picameraはRaspberry Piのカメラモジュールにアクセスするためのモジュール、timeはPythonの時間関係のモジュール、twythonはTwitterのAPIにアクセスするためのモジュール(上述)です。

Pythonを使ってRaspberry Piのカメラモジュールを操作する方法は以下の記事を参照。

Raspberry Pi(ラズベリーパイ)のカメラモジュールをPythonで操作する

こんにちは、okuzawatsです。 Raspberry Pi(ラズベリーパイ)をいじるのが楽しすぎて、日々秋葉原をうろついています。 さて、Pythonを使ってRaspberry Pi(ラズベリーパ ...

続きを見る

# coding: utf-8
import picamera
import time
import twython

次に、前述の「Twitterにアプリケーションを登録する」で取得したキーワードを使って、TwitterのAPIにアクセスするためのオブジェクトを作成します。
「xxxxx〜」となっているところは、各自で読み替える必要があります。
「api」として作成しているのが、TwitterのAPIにアクセスするためのオブジェクトです。

CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxx'
ACCESS_KEY = 'xxxxxxxxxxxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxx'
api = twython.Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

さらに、botからツイートする内容をプログラムで記述します。
今回は、撮影時刻と撮影した画像をツイートしてみます。
Raspberry Piの記憶容量が限られているので、画像は撮影ごとに上書きします。
time.time()で現在時刻を取得、camera.capture()で撮影を行います。

tweetTime = time.time()
camera = picamera.PiCamera()
camera.capture('tmpImage.jpg')
tweetImage = ('tmpImage.jpg','rb')

最後に、twythonのupdate_status_with_mediaメソッドを使ってTwitterのAPIにアクセスし、先ほど作成した現在時刻と撮影した写真をTwitterにアップロードします。

api.update_status_with_media(status=tweetTime,media=tweetImage)

cronの設定

cronから先ほど作ったプログラムを定期的に叩いて、Twitterへのアップロードを自動化します。
今回は、10分おきにアップロードを行うよう設定してみます。

Raspberry Piのターミナルに「crontab -e」とコマンドして、cronの設定を行います。
末尾に以下の内容を追加します。
パスの部分は、プログラムファイルの場所を指定します。

*/10 * * * * python /home/pi/PiCameraUploader/PiCameraUploader.py

Raspberry PiがTwitterのbotになった

これでRaspberry PiをTwitterのbotになりました。

Twitterにアップロードされた様子を以下にのせておきます。
水槽で飼っているメダカです。
画質が悪いですが、調整すれば良くなると思います。

Raspberry Pi Twitter bot

Raspberry PiをTwitterのbotにするために使ったもの一覧

Raspberry PiをTwitterのbotにするために使ったものの一覧です。

-Raspberry Pi

Copyright© モバイルプログラミング@つくば , 2017 AllRights Reserved Powered by AFFINGER4.