mixture-art@Q
技術+アイディア+世俗+なんとなく思ったこと、すべての融合がmixture-art
Raspberry PiからPythonでつぶやく方法

Raspberry Piの利点はなんといってもネットへの接続が容易なことだ。
デフォルトでEthernetはついてるし、WiFiのアダプタなんかも動作確認済みの代物がいくつもある。
そりゃそうだよな、Linuxが動いているわけだから。

ちなみに個人的なオススメはコレ
Edimax EW-7811UN

ネット接続ができたら次にやりたいのは素直に考えて
やはり「ネットから情報取得して云々」か「ネットに対して情報発信して云々」だろう。
Raspberry PiはGPIOやシリアル通信用のポートが出してあるので
そこにスイッチを繋いだりセンサーを繋いだりはたまた外部のマイコンを繋いだりして
その結果をネットに投げる、という遊び方ができるわけだ。

むかーしArduinoを使って「コーヒーが沸いたらTwitterで知らせる」とか作ってたひとがいたけど、
そういう楽しみ方って今で言う『IoT』の原型だよな。

ここでは後者の一例「ソーシャルメディアに対してつぶやく方法」について過去にトライしたログを示す。

ちなみに言語はPythonを選択した。
これは単純にライブラリとサンプルが充実してそうな感じがしたからだ。
まぁ見込み通りだったんじゃないかなー、と思っている。

<Facebook直接はあまり好ましくなかった>

結論としては好ましくなかったのでやめたのだけど、一応Facebookdへつぶやく方法のログを残す。
とりあえずすぐに結論に辿り着きたいひとは本章は飛ばしてくれぃ。

まずFacebookのDeveloperページからGraph APIのアクセストークンをゲットする
https://developers.facebook.com/tools/explorer/

ちなみにここを参考にした
http://nbviewer.ipython.org/github/ptwobrussell/Mining-the-Social-Web-2nd-Edition/blob/master/ipynb/Chapter%202%20-%20Mining%20Facebook.ipynb

python for FacebookのSDKをここから落として
setup.py install
https://github.com/pythonforfacebook/facebook-sdk

ソースはこんなカンジで

oauth_access_token =“(アクセストークンをコピペ)”

import facebook
graph = facebook.GraphAPI(oauth_access_token)
profile = graph.get_object(“me”)
friends = graph.get_connections(“me”, “friends”)
graph.put_object(“me”, “feed”, message=”python API test”)

で、問題は、Facebookは全く同じデータが続けて送られるとエラーになるのだ。
それには早々に気づいたのでデバッグの際には一回一回time stampに基づいて微妙に変えたデータを毎回送っていた

でも何回も「似たようなもの」をつぶやくと結局のところフィードが止められた。(賢いね)

なのでTwitterに変更することにした

<Twitterで完動決着>

Facebookに取り込みたくても結局のところTwitter連動させれば良いのでまぁいいかとTwitterにトライ。

ここでAPI key等はゲット
https://apps.twitter.com/app/6116556/keys

とりあえずこのライブラリが使えたのでこれで十分と思う。

twython
ダウンロード
https://github.com/ryanmcgrath/twython
ドキュメント
https://twython.readthedocs.org/en/latest/usage/starting_out.html

あとはこんなカンジで

from twython import Twython
twitter = Twython(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
twitter.update_status(status=’python API test’)

とても簡単。

写真ならこう
photo = open(‘./test.jpg’, ‘rb’)
twitter.update_status_with_media(status=’python for twitter api test with photo’, media=photo)

滞りなくできたのでどうやらコレで使い物になりそうだ