RaspberryPi2からつぶやく その2
仕様変更
・Twitterライブラリをtwythonからtweepyに変更。
ストリーム取得の実装がtweepyだと楽だったため(結局ストリームを監視するのではなく時限式に変更してしまいましたが...)
参考までに↓no6.hatenablog.com
・トリガーをリプライではなく時限式に変更。
リプライを受け取る→撮影→返信をするためにTLストリームを監視するようにしていたが、研究室の回線ではなぜか数分経つとストリームの取得が出来なくなってしまったため。
以上です。
3番目の実装に関しては後ほど。
写真を撮影しツイートに添付して投稿する
今回は今後画像解析とかしたいからという建前のもと、使い慣れているopenCVを使いました。
カメラから画像を取得して、jpegで保存します。
保存した画像をtweepyを使ってつぶやく簡単なプログラムです。
#get picture and tweet def upload_picture(message): api = tweepy.API(auth_handler=auth) capture=cv2.VideoCapture(0) capture.set(3,640) capture.set(4,480) if not capture: print "Could not open camera" ret, im = capture.read() cv2.imwrite('cap.jpg', im) api.update_with_media('cap.jpg', status=message)
pythonで全角文字を使用する
pythonのデフォルトの文字コードはASCIIとなっており、このままだとツイートの内容を日本語にすることができない。
そこで、文字列の直前にuを付け加えることでpythonにユニコード文字だと教えて日本語でツイートの内容を記述します。
d.hourは現在の時間です。
upload_picture(str(d.hour)+u"時のようすだよ!")
時限式でつぶやく
今回、毎時0分につぶやくためにcronを使用します。
ターミナルに「crontab -e」と入力し、実行タイミングと実行プログラムを登録します。
* */1 * * * python (.pyファイルの絶対パス)
ちなみに、
分 時 日 月 曜日 コマンド
の並びになっています。
参考
cron の設定ガイド
こうして毎時0分に写真付きでツイートが投稿されるようになりました!
さらに自動エサやり機能も付けたいと思いますが、これは卒論が終わってから気が向いたらやると思います...