ただ、中で使っているreadlineはimportした瞬間にbuilt-inのraw_input()を乗っ取ってしまい、かつ完全にマルチバイトに対応しきれていない様で、入力後の文字が化け化けになってしまいました。
おそらく、入力をutf-8で想定した作りになっているんだと思いますが、これはおそらく解決までに時間が掛かりそうな気がしています。
なのでpatchを書いてa2cさんにpull requestしました。
まれにutf-8しかない文字をtwitter/wassrに書き込んでくれる人がいるので、良いテストになりました。
raw_input()の変わりに、sys.stdin.readline()を使うようにしてあります。
diff --git a/tw2.py b/tw2.py
index fb04179..98fe90a 100755
--- a/tw2.py
+++ b/tw2.py
@@ -73,6 +73,9 @@ if __name__ == "__main__":
friends = set()
friendsTimeLine = []
+ def _T(text):
+ return text.encode('mbcs', 'ignore')
+
def complete(text, status):
results = [x for x in friends if x.startswith(text)] + [None]
return results[status]
@@ -90,13 +93,13 @@ if __name__ == "__main__":
# get twitter friends Replies
print '\twassr replies\t'
for data in reversed(wassr.getReplies()):
- print '%-12s : %s' % (data['user_login_id'] ,data['text'])
+ print _T('%-12s : %s' % (data['user_login_id'] ,data['text']))
friends.add(data['user_login_id'])
# get twitter friends Replies
print '\n\twassr replies\t'
for data in reversed(twitter.GetReplies()):
- print '%-12s : %s' % (data.GetUser().GetScreenName() ,data.GetText())
+ print _T('%-12s : %s' % (data.GetUser().GetScreenName() ,data.GetText()))
friends.add(data.GetUser().GetScreenName())
return 0
@@ -105,7 +108,7 @@ if __name__ == "__main__":
# Get FriendsTimeLine
print ' ----- wassr Friends Time Line -----'
for data in reversed(wassr. getTimeline()):
- print "%-12s: %s" % (data['user_login_id'] ,data['text'])
+ print _T("%-12s: %s" % (data['user_login_id'] ,data['text']))
twit = "wr[]%-12s: %s" % (data['user_login_id'] ,data['text'])
if twit in friendsTimeLine:
pass
@@ -114,7 +117,7 @@ if __name__ == "__main__":
friendsTimeLine.append(twit)
print '\n ----- twitter Friends Time Line -----'
for data in reversed(twitter.GetFriendsTimeline()):
- print '%-12s : %s' % (data.GetUser().GetScreenName() ,data.GetText())
+ print _T('%-12s : %s' % (data.GetUser().GetScreenName() ,data.GetText()))
# append log
twit = "tw[%s]%-12s: %s" % (data.GetCreatedAt(), data.GetUser().GetScreenName(), data.GetText())
if twit in friendsTimeLine:
@@ -127,7 +130,8 @@ if __name__ == "__main__":
prompt = '\n cmd: Friendstimeline[f] eXit[xx] \n> '
while True:
- input = raw_input(prompt).split(" ")
+ print prompt,
+ input = sys.stdin.readline().decode('mbcs').encode('utf-8').strip().split(" ")
if input[0] != '':
if len(input) == 1:
if len(input[0]) > 2:
Macで動かなかったら御免なさい。