RaspberryPiからTwitterのAPIにアクセスしてTweetを送信する
センサー情報を手軽にネットにアクセスするならTwitterをつかうのが一番楽かなということでpythonを使用してAPI経由でTweetしてみます。 (ちなみに単純なTweet程度であればIFTTTを使えばAPIを経由しなくても、shからcurl経由でアクセスすればのことで同じことはできますけどね。)
Twitterアプリの作成と情報の取得
事前準備として
- ツイッターアカウントの作成
- 新しいアプリの作成
参考:https://apps.twitter.com/app/new
↑アプリケーション作成ページの画面
↑アプリケーション作成後の表示例
は事前に行ってください。
以降は以下の手順となります。いろいろ伏せ字になっていますが、適宜自分のアプリの設定に読み替えてください。
- アプリの設定の中で【Keys and Access Tokens】タブから【Consumer Key】【Consumer Secret】を取得します。
- 同じページの下の方にある【Token Actions】の項目の【Create my access token】をボタン押して生成される【Access Token】【Access Token Secret】を取得します。
↑(1)【Consumer Key】【Consumer Secret】を取得
↑(2)【Access Token】【Access Token Secret】を取得
作成したアプリで以下の項目が取得できればOKです。
Tweepy
TweepyとはTwitterを容易に使用するためにTweepyというライブラリ使用します。
Twitterを使用するには認証やAPIを使っていくことになりますが、このTweepyはデフォルトのTwitterのAPIの形式に概ね近い形でアクセスできるので、簡単につかうことができます。
Tweepyのインストール事前準備
Tweepyはpythonのライブラリなのでpythonのパッケージ管理を容易にするeasy_install
とpip
を今後のことを考えて両方共インストールしておきます。すでに導入済みであれば、この手順は不要です。
$ 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