twitterのfollower発言で、漢字が読めなかった貴方。「@mattn_jp それなんて読むの?」とか聞くのが恥ずかしい貴方。そんな貴方にピッタリのサービスです。twitter followerの発言に「読み」を付けて表示します。(まぁ私は難しい単語なんて使いませんが...)
文字の分解にはYahoo! JAPANの「日本語形態素解析Webサービス」を使用しています。
色の変っている部分にマウスを当てると、ツールチップにて読みを教えてくれるようになっています。
で、いきなりですが「よみふったー」のソースです。
ライブラリとしてはwebSimple.pyのほかにPyWrapperに含まれるElementTree、BeautifulSoupを使っています。
#!-*- coding:utf-8 -*-
import os
import re
import base64
import xmllib
import logging
import elementtree.SimpleXMLTreeBuilder as xmlbuilder
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from BeautifulSoup import BeautifulSoup
from webSimple import Simple as webSimple
class MainPage(webapp.RequestHandler):
def post(self):
twitter_user = self.request.get('twitter_user').encode('utf-8', 'replace')
template_valuse = {
'twitter_user' : twitter_user,
'statuses' : []
}
try:
twitter_url = "http://twitter.com/statuses/user_timeline/%s.xml" % twitter_user
twitter = webSimple({ 'base_url': twitter_url })
yahoo = webSimple({
'base_url': 'http://api.jlp.yahoo.co.jp/MAService/V1/parse',
'param' : { 'appid' : 'xxxxxxxx', 'results' : 'ma', },
})
xml = twitter.get().content
r = re.compile(r'(\&#\d+;)')
for st in BeautifulSoup(xml)('status'):
name = r.sub(lambda x: unichr(int(x.group(1)[2:-1])), st.user.screen_name.string).encode('utf-8', 'replace')
msg = r.sub(lambda x : unichr(int(x.group(1)[2:-1])), st.text.string).encode('utf-8', 'replace')
xml = yahoo.get({ 'sentence': msg }).content
words = []
for word in BeautifulSoup(xml)('word'):
words.append({
'reading' : word.reading.string.encode('utf-8', 'replace'),
'pos' : word.pos.string.encode('utf-8', 'replace'),
'surface' : word.surface.string.encode('utf-8', 'replace'),
})
template_valuse['statuses'].append({
'screen_name' : name,
'words' : words,
})
except Exception, e:
template_valuse['error'] = e
pass
path = os.path.join(os.path.dirname(__file__), 'yomifutter.html')
self.response.out.write(template.render(path, template_valuse))
def get(self):
path = os.path.join(os.path.dirname(__file__), 'yomifutter.html')
self.response.out.write(template.render(path, {}))
def main():
application = webapp.WSGIApplication([('/yomifutter/', MainPage)], debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
適当なコードで申し訳ない...汗