Index > Python で TwitterAPIを使って Tweet を取得
Tue, December 8, 2009

Python で TwitterAPIを使って Tweet を取得

タイムラインのデータを利用したアプリを開発中。 まずは、プログラマテックな方法で、自分のTLを取得してみる。

python-twitter のインストール

$ python setup.py build
$ sudo python setup.py install

依存する python モジュールのインストール

$ sudo apt-get install python-simplejson

自分のTLを取得

# -*- coding: utf-8 -*-

import sys
import twitter

t_account = 'tomoakioshima'
count     = 10

api = twitter.Api()
statuses = api.GetUserTimeline(t_account,count)

for s in statuses :
    #print s.text
    print s.text.encode(sys.getfilesystemencoding())

GetUserTimeLine()関数で usrname を指定する。 二番目の引数で取得するメッセージ(tweet)の数を指定可能。

結果

通信速度、PocketWifiなかなかはやい(気がする) D01NXに比べて,emobileな話
PocketWifi,Android Dev Phone とハード面の準備が進むものの、肝心の開発をしている時間を確保できていない。
bloggerでもやはりmarkdownが使えないと困ると思い始めたところ。GAE経由での方法をテスト実装までしたけど、それやはりはじめると本題から遠ざかりそうで怖い。yak...
Android SDK + Hello World できた。
android hello world を試そうとおもったが、意外にAndroid SDK のインストールに苦戦中。
Android Dev Phone 1 was shipped.
やはりアドセンスの表示位置でクリックされる率はかなり変わるな...
大根おろし+しょうゆ と ビール(ただしアルコールゼロのFree) の組み合わせはまずいことが判明。からさだけが引き立ってしまう。
気分で大掃除をはじめたのはいいが、かえって状況がひどくなったところ。ものものしい状況を尻目に掃除ではなく本題の仕事をそろそろはじめなくてはと思っているところ。
思考フレームワーク ”自分と相手” を忘れていた。相手を取り巻く環境を考慮することもお忘れなく。

最新の10件取得できた。

mytweet.py をリダイレクトするとエラーになる件

本題とは無関係なのだが、python-twitter で取得したメッセージを print で出力した結果をリダイレクトしてファイルに保存しようとするとエラーになる。 (そのまま標準出力する場合は問題ない。)

ググってみると、 標準出力とリダイレクトのエンコーディング があり、助かりました。

原因

print s.text

このコードは、 標準出力するときはエラーにならないが、 リダイレクトしてファイルに落とそうとすると エラーになってしまう。

codeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

結論としては、print s.text ではなく...

print s.text.encode(sys.getfilesystemencoding())

と書けばエラーにならない。(標準出力もリダイレクトでもエラーにならない。)

原因: unicodeオブジェクトをいきなりprint文で印字しようとした...と、つまり s.text は文字列ではなくオブジェクトだと。

 Twitter
follow me on Twitter
 Categories