2008年7月1日火曜日

発作的にtwitter クライアントをpythonで実装してみる

なんとなくで出来た。pythonってすごいなあ。
urlib2が便利すぎる。

参考:
perlでの実装例
jsonのパージの仕方
twitterAPI DOC
urlib2でプロキシ通すとき参考にした
twitter時間を日本時間に直すとき使った もいっこ時計型
python辞書型
時間の処理だけ参考にしたpython実装

'''
twitter
friends timeline get
'''

import urllib2
import json
import calendar
import time

toplevel_url = 'twitter.com'
target_url = 'twitter.com/statuses/friends_timeline/screen_name.json'
protocol = 'http://'
proxy = {'http':'http://hogehoge.com:8080/'}
username = 'hogehoge@gmail.com'
password = 'xxxxxxx'
proxy_handler = urllib2.ProxyHandler(proxy)

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, toplevel_url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(proxy_handler, authhandler)
urllib2.install_opener(opener)
pagehandle = urllib2.urlopen(protocol + target_url)
json_contents = pagehandle.read()
contents = json.read(json_contents)

def twittertime2time(created_at):
unix_time = calendar.timegm(time.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y'))
return time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime(unix_time))

for content in contents:
print twittertime2time(content['created_at']), content['user']['screen_name'], content['text']
# for k, v in content.iteritems():
# print k, v
# if k == 'user':
# for uk, uv in v.iteritems():
# print uk, uv

# print contents

驚くくらいjsonの解説が少なくて吃驚。ググり方が悪いのか。
また、twitter APIの戻り値(jsonで渡される中身の数々)に関しても、情報が無い。
取り敢えずcreated_atが作られた時間、userの中に入れ子で色々入ってて、textには本文が入ってる。
以下取れる情報を列挙しとこう。後日何が何かを調べよう。

favorited
truncated
text
created_at
source
in_reply_to_status_id
in_reply_to_user_id
id
user
name
url
profile_image_url
screen_name
followers_count
protected
location
id
description

とりあえず取れるのはこんなところ。

1 件のコメント:

匿名 さんのコメント...

urllib2は,IEのproxyをみてるから,突然つながらなくなったりしておかしいと思ったらIEの設定を調べるべし。(自分でメモ代わりコメント)