PythonのTwitter APIラッパー、python-twitterを使ってみました。

% sudo easy_install python-twitter

import twitter
api = twitter.Api()
statuses = api.GetUserTimeline('user_name')
print 'statuses'
print statuses
print '-'*20
for s in statuses:
        print 'status:'
        print s.text
return statuses

発言は取れますが、twitter.Statusにin_reply_to_user_id, in_reply_to_status_idが無いので、会話の流れがよくわからない。

ということでパッチを書きました。


--- twitter.py  2007-07-16 02:38:54.000000000 +0900
+++ twitter.py     2008-09-11 13:50:12.000000000 +0900
@@ -41,7 +41,9 @@
                id=None,
                text=None,
                user=None,
-               now=None):
+               now=None,
+               in_reply_to_user_id=None,
+               in_reply_to_status_id=None):
     '''An object to hold a Twitter status message.

     This class is normally instantiated by the twitter.Api class and
@@ -66,6 +68,8 @@
     self.text = text
     self.user = user
     self.now = now
+    self.in_reply_to_user_id = in_reply_to_user_id
+    self.in_reply_to_status_id = in_reply_to_status_id

   def GetCreatedAt(self):
     '''Get the time this status message was posted.
@@ -281,7 +285,9 @@
     return Status(created_at=data.get('created_at', None),
                   id=data.get('id', None),
                   text=data.get('text', None),
-                  user=user)
+                  user=user,
+                  in_reply_to_user_id=data.get('in_reply_to_user_id', None),
+                  in_reply_to_status_id=data.get('in_reply_to_status_id', None))

 class User(object):

これで返信先も表示できます。


import twitter
def run():
        api = twitter.Api()
        statuses = api.GetUserTimeline('user_name')
        for s in statuses:
                print 'status:'
                if s.in_reply_to_status_id:
                        status = api.GetStatus(s.in_reply_to_status_id)
                        print '> (%s) ' % status.user.screen_name, status.text
                print s.text
        return statuses

if __name__=='__main__':
        run()