2005 Apr 27th
昨日書いたgoodicライブラリを使って、メールを送ることでgoo辞書を引けるようにしてみる。なんでそんな回りくどいことをするかというと、これができたら携帯電話(確かに僕のはウィルコムだから携帯では(以下略))から辞書が引けるのです。と言っても、端末自体がそういう辞書機能を持ってるのもあるし、ある程度ウェブが参照できる端末だったら要らないかもですが。

さておきその方法。使い方としては、それぞれの引きたい辞書によって次のアドレスを宛先にします。
英和: ej@matatabi.homeip.net 和英: je@matatabi.homeip.net 国語: jn@matatabi.homeip.net
で、引きたい語をメールのサブジェクトにして、本文には何も書かないでメールを送信します。したら、辞書を引いた結果がメールで送られてくるというわけです。
これはまず、以下のようなスクリプトを用意します。
#/usr/bin/env python
# -*- coding: euc-jp -*- 

import sys, re, smtplib, goodic

###
# リストの中から正規表現にマッチする部分を返す
###
def get_pat(pat, lines):
    for line in lines:
        m = pat.match(line)

        if m:
            return m.group(1).strip()

###
# 送られてきたメールからFromとSubjectを抜き取る
###
def parse_mail(recv_mail):
    addr = ''
    word = ''

    addrpat = re.compile(r'^From:(.*?)$', re.IGNORECASE)
    wordpat = re.compile(r'^Subject:(.*?)$', re.IGNORECASE)

    addr = get_pat(addrpat, recv_mail)
    word = get_pat(wordpat, recv_mail)

    word = unicode(word, "euc-jp", "ignore")

    return (addr, word)

###
# 辞書引きの結果をメールで送信
###
def send_mail(headword, meaning, addr):
    headword = headword.encode("iso-2022-jp", "ignore")
    meaning = meaning.encode("iso-2022-jp", "ignore")

    msg = "From: dic@matatabi.homeip.net\r\n"
    msg += "To: %s\r\n" % addr
    msg += "Subject: %s\r\n\r\n" % headword
    msg += "%s" % meaning

    server = smtplib.SMTP("localhost")
    server.sendmail("dic@matatabi.homeip.net", addr, msg)
    server.quit()

###
# main
###
if __name__ == "__main__":
    recv_mail = sys.stdin.readlines()
    addr, word = parse_mail(recv_mail)
    kind = sys.argv[1]
    headword, meaning = goodic.search(kind, word)
    send_mail(headword, meaning, addr)

これを適当なところに適当な名前(例えば"/usr/local/bin/goodicmail.py")で保存して、実行属性をつけて保存します。
次にrootで"/etc/aliases"を編集して、
ej: "| nkf -e | /usr/local/bin/goodicmail.py ej" je: "| nkf -e | /usr/local/bin/goodicmail.py je" jn: "| nkf -e | /usr/local/bin/goodicmail.py jn"
を追加して、newaliasesコマンドを実行。

これで上記のアドレスにメールを送ることで、辞書引き結果のメールが返ってくるというわけです。
Posted by setomits at 08:38 | Comments: 0
Leave a comment
Required fields are marked with *
search
calendar
Mar 2010
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
28293031   
archives
photos on flickr
www.flickr.com
bookmarks on delicious