2015年8月12日水曜日

Python で Twitter API を叩いて自動でつぶやく。

Python スクリプトから Twitter API を叩いてツイートする手順のメモです。
ソースコードを https://github.com/ks6088ts/twitter においてますが、絶賛開発中なため手順が少し変わってるかもですが適宜読み替えて実行してください。


[使う技術]
- Python : HTTP リクエストを駆使して OAuth 認証したりツイートしたりします。
- Git : Github からリポジトリを Clone するのに使います。(ブラウザからポチポチダウンロードでもおk)


[手順]

1. ライブラリのインストール
 OAuth 認証と HTTP リクエストを簡素にするためサードパーティ製モジュールをインストールします。
 $ sudo pip install requests requests-oauthlib

2. Twitter アプリの設定
https://apps.twitter.com/ にアクセスして、Read and Write  Permission を付与したアプリを作ります。
電話番号の登録が必要なので若干面倒だったりします。

3. コードの clone
Github に上げてる以下のリポジトリをclone
 $ git clone https://github.com/ks6088ts/twitter

4. OAuth認証
auth.py の api_keyapi_secret に 2 で取得したパラメータを書き込んで実行。
以下のようなログが出れば、auth.json が生成される。
[ec2-user@ip-***** twitter]$ python auth.py Please go here and authorize, "https://api.twitter.com/oauth/authorize?oauth_token=***********************"Paste the full redirect URL here. http://hoge.jp/?oauth_token=*********&oauth_verifier=*****************

※ Please go hereうんちゃら の URL にブラウザでアクセスすると、アプリの認証みたいなページが出てくるのでこれを承諾してください
※ 承諾するとリダイレクトされるので、リダイレクト先のURLをコンソールにコピペしてください。

5. ツイートしてみる
以下を実行すると"sample"とつぶやくはずです。
$ python tweet.py 

[技術メモ]

OAuth について

auth.py : OAuth 認証では、複雑な一連の HTTP のやりとりがありますが、requests-oauthlib がうまく複雑さを隠蔽してくれます。
とりあえず必要最低限な認識として、
API KEY / API SECRET / CALLBACK URL を入力として、
TOKEN/ TOKEN SECRET を取得する
と理解だけしておきましょう。
ぶっちゃけ細かいことはよくわかってません未だに。
それでも、使えることは使えるし、ちゃんとやろうとしたら外部仕様としてエラーハンドリング方法だけ知っておけばいいんじゃないでしょうか、API のユーザー視点では。

Web API を叩くにあたって

広くWebAPIと表現しましたが、Twitter API に限らず普通のWebサービスのAPIは、
OAuth 認証で取得した Token 情報とともにサービスプロバイダが定義したプロトコルに従ったHTTPリクエストを送れば必要なレスポンスが帰ってくる
という認識。

その後の拡張性

自動でtweet できるようになったので、今後の拡張性としては
 - 定期的(or イベント駆動)でつぶやく
 - 文章を工夫する
といったところか。

前者は cron 使えば解決。
$ crontab -e して、crontabの書き方 にしたがってコードを書くだけ。

後者はいろんなウェブサービスとの連携、ウェブサイトの情報をスクレイピングしてデータ生成( 自然言語処理、機械学習、etc)したり夢は広がりまくります。 

0 件のコメント:

コメントを投稿