読者です 読者をやめる 読者になる 読者になる

RaspberryPi(Python)でTwitterに投稿してみる

RaspberryPiからTwitterAPIにアクセスしてTweetを送信する

センサー情報を手軽にネットにアクセスするならTwitterをつかうのが一番楽かなということでpythonを使用してAPI経由でTweetしてみます。 (ちなみに単純なTweet程度であればIFTTTを使えばAPIを経由しなくても、shからcurl経由でアクセスすればのことで同じことはできますけどね。)

ifttt.com

Twitterアプリの作成と情報の取得

事前準備として

参考:https://apps.twitter.com/app/new

f:id:ueponx:20160524194806j:plain

↑アプリケーション作成ページの画面

f:id:ueponx:20160524194808j:plain

↑アプリケーション作成後の表示例

は事前に行ってください。

以降は以下の手順となります。いろいろ伏せ字になっていますが、適宜自分のアプリの設定に読み替えてください。

  1. アプリの設定の中で【Keys and Access Tokens】タブから【Consumer Key】【Consumer Secret】を取得します。
  2. 同じページの下の方にある【Token Actions】の項目の【Create my access token】をボタン押して生成される【Access Token】【Access Token Secret】を取得します。

f:id:ueponx:20160524194811j:plain

↑(1)【Consumer Key】【Consumer Secret】を取得

f:id:ueponx:20160524194813j:plain

↑(2)【Access Token】【Access Token Secret】を取得

作成したアプリで以下の項目が取得できればOKです。

  • Consumer Key
  • Consumer Secret
  • Access Token
  • Access Token Secret

Tweepy

TweepyとはTwitterを容易に使用するためにTweepyというライブラリ使用します。

Tweepy

Twitterを使用するには認証やAPIを使っていくことになりますが、このTweepyはデフォルトのTwitterAPIの形式に概ね近い形でアクセスできるので、簡単につかうことができます。

Tweepyのインストール事前準備

Tweepyはpythonのライブラリなのでpythonのパッケージ管理を容易にするeasy_installpipを今後のことを考えて両方共インストールしておきます。すでに導入済みであれば、この手順は不要です。

$ sudo apt-get install python-setuptools
$ sudo aptitude install python-pip

事前準備はこれでOKです。

Tweepyのインストール

事前準備でインストールしたツールを使いますが、どちらを使ってもインストールすることができます。pythonに関してあまり詳しくないのでどっちがいいかというのがわからないのですが、ネットでまとめていらっしゃる方がいたので、それを参考に自分はpipを使うことにしました。 ( Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

$ pip install tweepy

または

$ sudo easy_install tweepy

これにて準備は完了です。

TweepyをつかってTweetする。

通常のライブラリと同様にTweepyを使用すれば問題ありません。 以下の様に使用します。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# Tweepyライブラリをインポート
import tweepy
from datetime import datetime

# 各種キーをセット(各自でXXXXXXXXXXXXXXXXXXXXXXXXXの部分をいれかえてください)
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

#APIインスタンスを作成
api = tweepy.API(auth)

# これだけで、Twitter APIをPythonから操作するための準備は完了。
print('Auth Done!')

api.update_status(status='Tweepyのテスト投稿です。' + datetime.now().strftime('%Y/%m/%d'))

ツイッターでは同じ文面のTweetを投稿を行うことができないので、Tweetの末尾に投稿時刻を追記しています。

APIのドキュメントはこちらになります。 API Reference — tweepy 3.5.0 documentation